QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 875|回复: 1

关于KILL()和 SIGNAL()

[复制链接]
发表于 2005-5-24 12:23:31 | 显示全部楼层 |阅读模式
现在想在父进程中向进程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;
}
发表于 2005-5-25 21:02:36 | 显示全部楼层
请问信号17,16是什么?信号的是内核定义的吧,给用户用的只有

SIGUSR1,SIGUSR2,还有,你来个同步是什么意思呢?信号相当于中断,

你定义一个子程序,信号出现了就到中断服务子程序了,感觉你应该

好好理解一下信号的概念
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 00:46 , Processed in 0.037009 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表