实验五 进程间通信实验
一、实验目的
1、了解什么是信号。
2、熟悉 LINUX 系统中进程之间软中断通信的基本原理。
3、了解什么是管道
4、熟悉 UNIX/LINUX 支持的管道通信方式
二、实验内容
1、编写一段程序,使用系统调用 fork( )创建两个子进程,再用系统调用 signal( )让父进
程捕捉键盘上来的中断信号(即按 ctrl+c 键),当捕捉到中断信号后,父进程用系统调用
kill( )向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止:
Child process 1 is killed by parent!
Child process 2 is killed by parent!
父进程等待两个子进程终止后,输出以下信息后终止:
Parent process is killed!
<参考程序>
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int wait_mark;
void waiting(),stop();
void main()
{int p1, p2;
signal(SIGINT,stop);
while((p1=fork())==-1);
if(p1>0) /*在父进程中*/
{
while((p2=fork())==-1);
If(p2>0) /*在父进程中*/
{
wait_mark=1;
waiting(0);
kill(p1,10);
kill(p2,12);
wait( );
wait( );
printf("parent process is killed!");
exit(0);
}
else /*在子进程 2 中*/
{
wait_mark=1;
signal(12,stop);
waiting();
lockf(1,1,0);