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);
void fg(char *p)
{
int pid=0;
if(p!=NULL)
{
pid=atol(p);
kill(pid,SIGSTOP);
kill(pid,SIGCONT);
waitpid(pid,NULL,NULL);
pid_jobs[jobs_num--]=0;
}
else
printf("error \n");
return 0;
}
void bg(char *p)
{
int pid=0;
if(p!=NULL)
{
pid=atol(p);
kill(pid,SIGCONT);
pid_jobs[jobs_num--]=0;
}
else
printf("error \n");
return 0;
}
//可見,後台運行與前台啟動並執行區別只在於前台運行等待子進程的退出而阻塞父進程操作。而後台運行時,可以在父進程中輸入命令繼續其他動作。本質上沒有區別,都是給子進程發送SIGCONT訊號。
http://blog.chinaunix.net/u3/94039/showart_1893558.html
---------------------------
1. 解釋程式前台運行與後台啟動並執行區別。
答:前景程式與使用者直接對話;背景程式則間接地為前景程式提供支援,一般來說是為前景程式提供所需要的資源。背景程式既可以直接與前景程式進行對話,也可以使用中間程式作為媒介。通常把使用者正在操作的程式稱為前景程式,而使用者沒有操作但也在啟動並執行程式(如系統服務)稱為背景程式.
命令解釋程式建立一個後台進程時,它在發出此進程命令後,
並在接收其他命令之前,不用等待這個進程結束。
例如:
$ddd &
而前台就要等待,直到進程結束為止。
例如:
$ddd
Ctrl-C就結束ddd。
前景程式和終端關聯,背景程式不受終端控制。
廣義上說,前景程式/背景程式並不是一個很明確的概念。如果是C/S結構,通常把用戶端的程式看做前景程式,而伺服器端程式看做背景程式。現在的作業系統都是多任務的作業系統,可以同時執行多個程式。前景程式就是你當前正在使用的程式,背景程式就是你開啟了以後沒有使用但仍在啟動並執行程式。