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()没有从父母那里得到任何信号,孩子也没有做出输出。 我在哪里做错了?
答案 0 :(得分:2)
来自pause
手册页:
pause()使调用进程(或线程)进入休眠状态,直到传递的信号终止进程或导致 调用信号捕捉功能。
由于您没有为SIGUSR2安装任何处理程序,信号将终止该进程并且您看不到输出。