当前位置: 技术问答>linux和unix
刚学linux几天,对其中很多函数不明白,还请高手指教一二
来源: 互联网 发布时间:2016-12-31
本文导语: 作业:编制一段程序,使其实现进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断 信号;当捕捉到中断信号后,父进程用系统调用kill()向两个...
作业:编制一段程序,使其实现进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断 信号;当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后 分别输出下列信息后终止: Child Process11 is Killed by Parent! Child Process12 is Killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent Process is Killed!
我的程序是这样的:
#include
#include
#include
#include
void stop(){}
int main()
{
int pid1,pid2;
pid1=fork();
if(pid1)
pid2=fork();
if(pid1==0||pid2==0)
{
pause();
printf("awaked!n");
if(!pid1)
{
printf("Child Process11 is Killed by Parent!n");
exit(0);
}
else if(!pid2)
{
printf(" Child Process12 is Killed by Parent!n");
exit(0);
}
}
else
{
signal(SIGINT,stop);
sleep(5);
kill(pid1,SIGCONT);
kill(pid2,SIGCONT);
printf("Parent Process is Killed!n");
}
return 0;
}
程序很不成熟,结果是 在输入ctrl-c之后只打印Parent Process is Killed!,两个子进程就没有继续执行,我的kill函数用的对吗?请高手详细讲解一下kill函数吧,感觉好迷茫,还有linux的那些信号,除了几个特殊的如SIGINT有特殊操作可以执行,其他的是不是都要用kill函数来传啊?
我的程序是这样的:
#include
#include
#include
#include
void stop(){}
int main()
{
int pid1,pid2;
pid1=fork();
if(pid1)
pid2=fork();
if(pid1==0||pid2==0)
{
pause();
printf("awaked!n");
if(!pid1)
{
printf("Child Process11 is Killed by Parent!n");
exit(0);
}
else if(!pid2)
{
printf(" Child Process12 is Killed by Parent!n");
exit(0);
}
}
else
{
signal(SIGINT,stop);
sleep(5);
kill(pid1,SIGCONT);
kill(pid2,SIGCONT);
printf("Parent Process is Killed!n");
}
return 0;
}
程序很不成熟,结果是 在输入ctrl-c之后只打印Parent Process is Killed!,两个子进程就没有继续执行,我的kill函数用的对吗?请高手详细讲解一下kill函数吧,感觉好迷茫,还有linux的那些信号,除了几个特殊的如SIGINT有特殊操作可以执行,其他的是不是都要用kill函数来传啊?
|
#include
#include
#include
#include
pid_t pid1, pid2;
void p(int sig)
{
int i;
kill(pid1, SIGTERM);
kill(pid2, SIGTERM);
printf("hin");
for( i = 0; i