後臺進程又叫守護進程,你知道嗎? shell
操做系統中,前臺進程和後臺進程有什麼區別?特徵是什麼? 服務器
後臺程序基本上不和用戶交互,優先級別稍微低一點
前臺的程序和用戶交互,須要較高的響應速度,優先級別稍微高一點 spa
直接從後臺手工啓動一個進程用得比較少一些,除非是該進程甚爲耗時,且用戶也不急着須要結果的時候。假設用戶要啓動一個須要長時間運行的格式化文本文件的進程。爲了避免使整個shell在格式化過程當中都處於「癱瘓」狀態,從後臺啓動這個進程是明智的選擇。 操作系統
LINUX後臺進程與前臺進程的區別 進程
LINUX後臺進程也叫守護進程(Daemon),是運行在後臺的一種特殊進程。它獨立於控制終端而且週期性地執行某種任務或等待處理某些發生的事件。 事件
通常用做系統服務,能夠用crontab提交,編輯或者刪除相應得做業。 crontab
守護的意思就是不受終端控制。Linux的大多數服務器就是用守護進程實現的。好比,Internet服務器inetd,Web服務器httpd等。同時,守護進程完成許多系統任務。好比,做業規劃進程crond,打印進程lpd等。 it
前臺進程就是用戶使用的有控制終端的進程 後臺
shell下,進程的前臺與後臺運行 終端
跟系統任務相關的幾個命令:fg、bg、jobs、&、ctrl+z
1. & 最常常被用到
這個用在一個命令的最後,能夠把這個命令放到後臺執行
2. ctrl + z
能夠將一個正在前臺執行的命令放到後臺,而且暫停
3. jobs
查看當前有多少在後臺運行的命令
4. fg
將後臺中的命令調至前臺繼續運行
若是後臺中有多個命令,能夠用 fg %jobnumber將選中的命令調出,%jobnumber是經過jobs命令查到的後臺正在執行的命令的序號(不是pid)
5. bg 將一個在後臺暫停的命令,變成繼續執行
若是後臺中有多個命令,能夠用bg %jobnumber將選中的命令調出,%jobnumber是經過jobs命令查到的後臺正在執行的命令的序號(不是pid)
1. jobs列舉出後臺做業信息。([做業號] 運行狀態 做業名稱)
2. ctrl+z 將任務放到後臺去,並暫停;
3. bg <%int> 將後臺任務喚醒,在後臺運行;
4. fg <%int> 將後任務的程序放到前臺;
1. ctrl+z 將任務放到後臺去,並暫停.
主進程waitpid(pid,&status,WUNTRACED)時,子進程
退出時,父進程被喚醒
2. 將後臺任務喚醒,在後臺運行;
kill(pid,SIGCONT);
3. 將後臺運行的程序放到前臺;
kill(pid,SIGCONT);
waitpid(pid,&status,WUNTRACED);
//可見,後臺運行與前臺運行的區別只在於前臺運行等待子進程的退出而阻塞父進程操做。然後臺運行時,能夠在父進程中輸入命令繼續其餘操做。本質上沒有區別,都是給子進程發送SIGCONT信號。