简述进程的启动、终止的方式以及如何进行进程的查看。
簡述進程的啟動、終止的方式以及如何進行進程的查看。
參考答案:
(1)在Linux中啟動一個進程有手工啟動和調度啟動兩種方式:
(1)手工啟動
用戶在輸入端發出命令,直接啟動一個進程的啟動方式。可以分為:
①前臺啟動:直接在SHELL中輸入命令進行啟動。
②后臺啟動:啟動一個目前并不緊急的進程,如打印進程。
(2)調度啟動
系統管理員根據系統資源和進程占用資源的情況,事先進行調度安排,指定任務運行的時間和場合,到時候系統會自動完成該任務。
(2)進程終止的5種方式
- 正常退出?
- 從main函數返回–語言級別的返回操作
- 調用exit–C庫函數
- 調用_exit–系統調用
- 異常退出?
- 調用abort 產生SIGAORT信號
- 由信號終止 ctrl+c /SIGINT
exit和_exit的區別
- 區別1:清空緩沖區的操作
- 區別2:exit會調用終止處理程序?
關于終止處理程序: - atexit可以注冊終止處理程序,ANSI C規定最多可以注冊32個終止處理程序。
- 終止處理程序的調用與注冊次序相反
- 函數原型:int atexit(void (*function)(void));
- 查看幫助文檔:man 2 atexit
- 總結exit與_exit區別?
1)_exit是一個系統調用,exit是一個c庫函數?
2)exit會執行刷新I/O緩存?
3)exit會執行調用終止處理程序
return和exit的區別
區別就是:
1)exit用于在程序運行的過程中隨時結束程序,其參數是返回給OS的。也可以這么講:exit函數是退出應用程序,并將應用程序的一個狀態返回給OS,這個狀態標識了應用程序的一些運行信息。
main函數結束時也會隱式地調用exit函數,exit函數運行時首先會執行由atexit()函數登記的函數,然后會做一些自身的清理工作,同時刷新所有輸出流、關閉所有打開的流并且關閉通過標準I/O函數tmpfile()創建的臨時文件。
exit是系統調用級別的,它表示了一個進程的結束,它將刪除進程使用的內存空間,同時把錯誤信息返回父進程。通常情況:exit(0)表示程序正常, exit(1)和exit(-1)表示程序異常退出,exit(2)表示系統找不到指定的文件。在整個程序中,只要調用exit就結束。
2)return是語言級別的,它表示了調用堆棧的返回;return是返回函數值并退出函數,通常0為正常退出,非0為非正常退出,請注意,如果是在主函數main, 自然也就結束當前進程了(也就是說,在main()里面,你可以用return n,也能夠直接用exit(n)來做),如果不是在main函數中,那就是退回上一層調用。在多個進程時,如果有時要檢測上個進程是否正常退出,就要用到上個進程的返回值。
(4)經常使用的進程調度命令為:at、batch、crontab。
總結
以上是生活随笔為你收集整理的简述进程的启动、终止的方式以及如何进行进程的查看。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简述DNS进行域名正向解析的过程。
- 下一篇: 简述Linux文件系统通过i节点把文件的