0
我正在創建一個程序,可以從一個父項創建許多子項。 如果執行exec
時出錯,我不希望再創建任何子項。 即使執行失敗後,以下代碼仍然會繼續創建子項。如果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);
}
}
}
感謝 丹尼爾
您是否嘗試將'SIGUSR1'更改爲'SIGTERM'? – SSC 2014-10-02 08:54:50
@SSC,是的。一樣 – dgamma3 2014-10-02 09:01:02