簡體   English   中英

在我自己的shell中創建后台進程

[英]creating background processes in my own shell

我正在編寫自己的unix shell作為作業的一部分,我無法處理創建后台進程的問題。 我編寫了一個信號處理函數,並將必要的(從我的角度來看,但顯然不夠好)部分實現了我的代碼,如下所示:

void handler(int sig)
{
    int pid;
    int status;
    pid = wait(NULL);
    printf("[%d]retval: %d \n", pid, WEXITSTATUS(status));
    fflush(stdout);
}

int main() { 
.....
....
struct sigaction sigchild; 
memset (&sigchild, 0, sizeof(sigchild)); 
sigchild.sa_handler = handler;
sigchild.sa_flags = SA_SIGINFO | SA_NOCLDWAIT;
...
...
if(isBackground)  //background process
{
    sigaction(SIGCHLD, &sigchild, 0);
}

例如,當我輸入“ sleep 5&”,然后輸入“ ps”以查看進程時,就沒有睡眠。 可能是什么問題? 提前致謝。

子進程是后台進程。 父級是前台進程。 SIGCHLD是當孩子終止時發送給父母的信號。 if (isbackground更改為if(!background)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM