0
Я создаю программу, которая создает много детей из одного родителя. Я не хочу, чтобы больше детей создавалось, если произошла ошибка, выполнявшая exec
. Следующий код по-прежнему продолжает создавать дочерние элементы даже после сбоя 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
@SSC, yup. то же самое – dgamma3