- 3
- 0
- 约1.09万字
- 约 18页
- 2020-11-12 发布于湖北
- 举报
实验 7- 编写多进程程序
实验七 编写多进程程序
学生姓名: 李亚军 学 号:
6100412196
专业班级: 卓越计科 121班
1.实验目的
通过编写多进程程序,使读者熟练掌握 fork() 、exec()
、wait() 和waitpid() 等函数的使用,进一步理解在 Linux
中多进程编程的步骤。
2.实验内容
该实验有 3个进程,其中一个为父进程,其余两个是
该父进程创建的子进程,其中一个子进程运行 “ls
-l ”指令,另一个子进程在暂停 5s之后异常退出,父进程
先用阻塞方式等待第一个子进程的结束,然后用非阻塞
方式等待另一个子进程的退出,待收集到第二个子进程
结束的信息,父进程就返回。
3.实验步骤
(1)画出该实验流程图
该实验流程图如图所示。
图 实验 7.1流程图
(2)实验源代码( multi_proc.c )
先看一下下面的代码,这个程序能得到我们所希望的
结果吗,它的运行会产生几个进程?请读者回忆一下 fo
rk() 调用的具体过程。
答:会产生四个进程
/* multi_proc_wrong.c */
#include stdio.h
#include stdlib.h
#include sys/types.h
#include unistd.h
#include sys/wait.h
int main(void)
{
pid_t child1, child2, child;
/* 创建两个子进程 */
child1 = fork();
child2 = fork();
/* 子进程 1的出错处理 */
if (child1 == -1)
{
printf(Child1 fork error\n);
exit(1);
}
else if (child1 == 0)
/* 在子进程 1中调用 execlp()函数*/
{
printf(In child1: execute ls -l\n);
if (execlp(ls, ls,-l, NULL)0)
{
printf(Child1 execlp error\n);
}
}
if (child2 == -1) /* 子进程 2的出错处理 */
{
printf(Child2 fork error\n);
exit(1);
}
else if( child2 == 0 ) /* 在子进程 2中使其暂停 5s*/
{
printf(In child2: sleep for 5 seconds and
then exit\n);
sleep(5);
exit(0);
}
else /*在父进程中等待两个子进程的
您可能关注的文档
- 实况足球2010抄作技巧.pdf
- 实力集团人力资源报表管理规定(定稿).pdf
- 实变函数习题解答(1).pdf
- 实施《化学反应原理》的教学要注意哪些问题?.pdf
- 实小语言文字规范化示范学校.pdf
- 实施多彩评价--满足多元发展2.pdf
- 实施方案模板.pdf
- 实施精细化管理走内涵发展之路——仪征市金升幼儿园交流发言稿.pdf
- 实施高中美术课程改革所遇的几个问题与对策.pdf
- 实现人生的价值--教学设计.pdf
- “馆藏即数据”:计算范式驱动下的GLAM馆藏数据化.docx
- 2026年韶关学院单招《数学》能力提升B卷题库及答案详解【夺冠】.docx
- 2026年韶关学院单招《数学》考试黑钻押题附参考答案详解【培优B卷】.docx
- 2026年韶关学院单招《数学》过关检测试卷及参考答案详解(预热题).docx
- 产业互联网:构建数字经济新生态的引擎.docx
- 2026年青海高等职业技术学院单招《数学》检测卷含完整答案详解【名师系列】.docx
- 2026物业费催缴标准化话术库与欠费治理跟进全套模板.docx
- 2026年青海高等职业技术学院单招《数学》考前冲刺测试卷【培优A卷】附答案详解.docx
- 2026年鞍山职业技术学院单招《数学》全真模拟模拟题(达标题)附答案详解.docx
- (社会科学专技类B类)事业单位考试职业能力倾向测验江苏省2026年应考难点详解.docx
原创力文档

文档评论(0)