使用fork()和exec()的Unix信号函数

时间:2014-11-11 23:00:38

标签: c signals exec fork

我的信号功能有点问题。

我的节目简介:

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?

0 个答案:

没有答案