操作系統(tǒng)中,前臺(tái)進(jìn)程和后臺(tái)進(jìn)程有什么區(qū)別?特征是什么?
后臺(tái)程序基本上不和用戶交互,優(yōu)先級(jí)別稍微低一點(diǎn)
前臺(tái)的程序和用戶交互,需要較高的響應(yīng)速度,優(yōu)先級(jí)別稍微高一點(diǎn)
直接從后臺(tái)手工啟動(dòng)一個(gè)進(jìn)程用得比較少一些,除非是該進(jìn)程甚為耗時(shí),且用戶也不急著需要結(jié)果的時(shí)候。假設(shè)用戶要啟動(dòng)一個(gè)需要長(zhǎng)時(shí)間運(yùn)行的格式化文本文件的進(jìn)程。為了不使整個(gè)shell在格式化過程中都處于“癱瘓”狀態(tài),從后臺(tái)啟動(dòng)這個(gè)進(jìn)程是明智的選擇。
LINUX后臺(tái)進(jìn)程與前臺(tái)進(jìn)程的區(qū)別
LINUX后臺(tái)進(jìn)程也叫守護(hù)進(jìn)程(Daemon),是運(yùn)行在后臺(tái)的一種特殊進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。
一般用作系統(tǒng)服務(wù),可以用crontab提交,編輯或者刪除相應(yīng)得作業(yè)。
守護(hù)的意思就是不受終端控制。Linux的大多數(shù)服務(wù)器就是用守護(hù)進(jìn)程實(shí)現(xiàn)的。比如,Internet服務(wù)器inetd,Web服務(wù)器httpd等。同時(shí),守護(hù)進(jìn)程完成許多系統(tǒng)任務(wù)。比如,作業(yè)規(guī)劃進(jìn)程crond,打印進(jìn)程lpd等。
前臺(tái)進(jìn)程就是用戶使用的有控制終端的進(jìn)程
shell下,進(jìn)程的前臺(tái)與后臺(tái)運(yùn)行
跟系統(tǒng)任務(wù)相關(guān)的幾個(gè)命令:fg、bg、jobs、&、ctrl+z
1. & 最經(jīng)常被用到
這個(gè)用在一個(gè)命令的最后,可以把這個(gè)命令放到后臺(tái)執(zhí)行
2. ctrl + z
可以將一個(gè)正在前臺(tái)執(zhí)行的命令放到后臺(tái),并且暫停
3. jobs
查看當(dāng)前有多少在后臺(tái)運(yùn)行的命令
4. fg
將后臺(tái)中的命令調(diào)至前臺(tái)繼續(xù)運(yùn)行
如果后臺(tái)中有多個(gè)命令,可以用 fg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺(tái)正在執(zhí)行的命令的序號(hào)(不是pid)
5. bg 將一個(gè)在后臺(tái)暫停的命令,變成繼續(xù)執(zhí)行
如果后臺(tái)中有多個(gè)命令,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺(tái)正在執(zhí)行的命令的序號(hào)(不是pid)
1. jobs列舉出后臺(tái)作業(yè)信息。([作業(yè)號(hào)] 運(yùn)行狀態(tài) 作業(yè)名稱)
2. ctrl+z 將任務(wù)放到后臺(tái)去,并暫停;
3. bg <%int> 將后臺(tái)任務(wù)喚醒,在后臺(tái)運(yùn)行;
4. fg <%int> 將后任務(wù)的程序放到前臺(tái);
1. ctrl+z 將任務(wù)放到后臺(tái)去,并暫停.
主進(jìn)程waitpid(pid,&status,WUNTRACED)時(shí),子進(jìn)程
退出時(shí),父進(jìn)程被喚醒
2. 將后臺(tái)任務(wù)喚醒,在后臺(tái)運(yùn)行;
kill(pid,SIGCONT);
3. 將后臺(tái)運(yùn)行的程序放到前臺(tái);
kill(pid,SIGCONT);
waitpid(pid,&status,WUNTRACED);
//可見,后臺(tái)運(yùn)行與前臺(tái)運(yùn)行的區(qū)別只在于前臺(tái)運(yùn)行等待子進(jìn)程的退出而阻塞父進(jìn)程操作。而后臺(tái)運(yùn)行時(shí),可以在父進(jìn)程中輸入命令繼續(xù)其他操作。本質(zhì)上沒有區(qū)別,都是給子進(jìn)程發(fā)送SIGCONT信號(hào)。聯(lián)系客服