Young87

当前位置:首页 >个人收藏

linux进程(软中断通信)

父进程创建两个子进程,接收到Ctrl+\后向两个子进程发送信号16和17 ,结束子进程生命周期

#include <stdio.h>
#include <signal.h>
int wait_mark = 1;
void stop()
{
	wait_mark = 0;
}

int main()
{
	int pid1,pid2;
	while((pid1=fork())==-1)
		;
	printf("pid1=%d\n",pid1);
	if(pid1==0)
	{
		signal(SIGQUIT,SIG_IGN);
		wait_mark = 1;
		printf("pid1 created!\n");
		signal(16,stop);
		while(wait_mark)
			;	
		printf("\npid1 killed by parent\n");
	}
	else
	{
		while((pid2=fork())==-1){}
		printf("pid2=%d\n",pid2);
		if(pid2==0)
		{
			signal(SIGQUIT,SIG_IGN);
			wait_mark = 1;
			printf("pid2 created!\n");
			signal(17,stop);
			while(wait_mark)
				;
			printf("\npid2 killed by parent\n");
		}
		else
		{
			signal(SIGQUIT,stop);
			while(wait_mark)
				;
			wait_mark = 1;
			kill(pid1,16);
			kill(pid2,17);
			wait(0);
			wait(0);
			wait_mark = 1;
			while(wait_mark)
			{
				signal(SIGQUIT,stop);
			}
			printf("\nparent killed!\n");
		}
	}
	return 0;
}



除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍

下一篇: 分享:自学编程的方法

精华推荐