我的信号功能有点问题。
我的节目简介:
void sigfunc(int sn)
{
if(sn == SIGINT)
printf("SIG TEXT!");
}
int main(void)
{
...
// spawn 10 children and execl my another programs
for (i = 0; i < 10; i++) {
pid = fork();
if (pid != 0) {
signal(SIGINT, sigfunc);
continue;
} else if (pid == 0) {
execl(pathtoprog[i], progname[i], NULL);
}
// wait for sig (only parent waits because programs from execl have their own while(1))
if(pid > 0)
while(1) {}
}
问题很简单:当我按下Ctrl + C时,我会看到SIG TEXT!
但是execl启动的程序会崩溃/挂起(我不确定,因为它们停止工作但仍然存在于进程监视器中)。如何写这个sigfunc只对父进程做出反应并让所有的孩子都独自使用execl?