|
现在想在父进程中向进程ID为P1的子进程发送软中断信号,使处于等待状态的子进程接收软中断信号后继续执行其他操作,那么在父进程中用
kill(p1,16);这一句可以吗?
下面的程序为何不能产生预期的结果啊?程序运行后无任何反映,处于等待状态,在按下CTRL+C之后就直接退出了,没有任何预期的输出,为什么呢?
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void waiting( ),stop( );
int wait_mark;
main( )
{
int p2;
while((p2=fork( ))= =-1); /*创建子进程*/
if(p2>0)
{
wait_mark=1;
signal(SIGINT,stop); /*接收到^c信号,转stop*/
waiting( );
kill(p2,17); /*向p2发软中断信号17*/
wait(0); /*同步*/
printf("Parent process is killed!\n");
exit(0);
}
else
{
wait_mark=1;
signal(17,stop); /*接收到软中断信号17,转stop*/
waiting( );
printf("Child process 2 is killed by parent!\n");
exit(0);
}
}
void waiting( )
{
while(wait_mark!=0);
}
void stop( )
{
wait_mark=0;
} |
|