实验五_Linux进程间通信

  • 格式:doc
  • 大小:196.00 KB
  • 文档页数:6

实验五 Linux进程间通信
1. 实验目的
1)熟悉在C语言源程序中使用Linux所提供的系统调用界面的方法;
2)掌握Linux中子进程的创建方法以及调度执行情况,理解进程与程序的区别;
3)掌握软中断信号的使用,了解使用软中断通信实现异步事件的方法;
4)掌握父子进程使用管道进行通信的方法,了解管道通信的特点和上的限制。

2. 实验内容
1) 父进程创建子进程
(1) 实现父进程创建一个子进程,返回后父子进程都分别循环输出字符串“I am parent.”
或“I am child.”5次,每输出1次后使用sleep(1)延时1秒,然后再进入下一循环。
(2) 在源程序中连续使用4个fork(),而不用if()进行返回值的判断,在4个fork()语言
后面输出字符“A”,观察并分析该程序编译连接执行后的输出结果。
(3) 由父进程创建一个子进程,子进程的功能史输出26个英文字母,使用execl()加载子
进程的程序。
(1)

结果:
(2)
结果:

(3)
2) 软中断的使用
(1) 编写一个程序循环显示“How are you?”,当键盘输入Ctrl+C的组合键后中断循环显
示,执行软中断程序,软中断程序的功能是修改循环变量的值终止循环,然后输出
“Byebye”。
输出显示结果:
3) 管道的使用:
(1) 编写一个程序,实现:父进程使用系统调用pipe()创建一个无名管道;
(2) 创建2个子进程,分别向管道各发下面中1条信息后结束:
Child 1 is sending a message to parent!
Child 2 is sending a message to parent!
(1)

结果:
(2)

输出结果:
3. 实验思考

1) 如果连续创建多个子进程而不使用条件进行各自空间的分隔,会出现什么情况?
2) 对实验内容2)进行改进,先输出10次“How are you?”,在此过程中使用Ctrl+C不能
中断循环显示,10次以后使用Ctrl+C可以中断循环,应该做那些修改?
3) 管道通信与软中断通信在信息量的大小上有何区别?
4) 共享同一个管道进行通信的读写进程之间必须满足什么关系,为什么?