[英]kill child process if exec fails
我正在創建一個程序,該程序可以從一個父母那里創建許多孩子。 如果執行exec
時發生錯誤,我不希望再創建任何子代。 即使執行失敗,以下代碼仍繼續創建子代。
void synch_signal (int sig)
{
fprintf(stderr,"%s","ERROR");
exit(0);
}
void create_children(int numberOfChildren, char **argc){
struct sigaction usr_action;
usr_action.sa_handler = synch_signal;
sigaction (SIGUSR1, &usr_action, NULL);
int pid = 0;
char mystring[100] = { 0 };
for (i; i <numberOfChildren; i++){
//removed for simplicity.
pid = fork();
if (pid){
//removed
}
else {
//removed
exec(...);
//exec failed
kill (getppid (), SIGUSR1);
}
}
}
謝謝丹尼爾
您需要在kill()
之后添加return語句,否則子進程將在kill()
函數完成后再次循環,並成為父進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.