簡體   English   中英

處理SIGCHLD會將EOF返回給父親,為什么?

[英]Handling SIGCHLD will return EOF to the father, why?

我有一個小的外殼,可以創建子級(使用fork()),並使其通過execvp執行一些命令。 它還支持&選項,以便父親可以同時運行其他命令。 當一個孩子死了時,我想在控制台以及孩子pid上寫那個,所以我為SIGCHLD定義了一個信號處理程序:

void backdeadchild(int sig)
{
 int pid, exitstat;
 pid = wait(&exitstat);
 printf("Child with pid: %d died", pid);
}

問題在於,在處理程序打印消息后,父親也會關閉。 我已經設法理解SIGCHLD在stdin中返回EOF(並且每當父親收到EOF時,它就會關閉),但是為什么SIGCHLD返回EOF? 如果正常..如何避免父親關閉?

如果child的stdout (或任何其他流)連接到父級的stdin ,則父級自然會收到EOF

或者,如果父級不處理,則父級可能會死於SIGPIPE (管道中斷)信號。

暫無
暫無

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

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