如何从父c ++向孩子发送唤醒信号

时间:2017-12-13 14:53:45

标签: c++ linux

int main()
{

    pid_t pid=fork();

    if(pid>0)
    {
        int a;
        cout<<"do you want to wake up the child? 1=yes/0=no "<<endl;
        cin>>a;
        if(a==1)
        {

            kill(pid,SIGUSR2);
            int status;
            waitpid(pid,&status,0);


        }
        else
        {
            cout<<"i didn't wake up the child"<<endl;

        }
        exit(0);
    }
    if(pid==0)
    {
        pause();

        cout<<"i'm starting working"<<endl;
        int n=0;
        for(int i=0; i<10; i++)
        {
            n+=4;
            cout<<n<<endl;
        }
        exit(0);
    }

我正在使用这些库: 看起来孩子中的pause()没有从父母那里得到任何信号,孩子也没有做出输出。 我在哪里做错了?

1 个答案:

答案 0 :(得分:2)

来自pause手册页:

  

pause()使调用进程(或线程)进入休眠状态,直到传递的信号终止进程或导致   调用信号捕捉功能。

由于您没有为SIGUSR2安装任何处理程序,信号将终止该进程并且您看不到输出。