0
点赞
收藏
分享

微信扫一扫

《操作系统》课程实验报告 进程的创建控制实验

醉倾城1 2022-02-07 阅读 58
linux

实现工具 Pc机 实现环境 Linux
实习内容(功能、目标) [实验内容]
创建进程,体会进程间的并发特征
[实验内容]
编写一段程序,使用系统调用fork()创建两个子进程p1和p2。而
且父进程输出字符串“father”,第一个子进程输出字符串“borther1”,第二个子进程输出字符串“borther2”
[实验要求]
(1)掌握系统调用fork()的使用方法及其功能;
(2)利用系统调用sleep()调整父进程及各子进程的并发执行过程;(3)认真查看和比较每次执行结果,分析原因。
[思考问题]
(1)为什么各字符串的输出顺序会是任意的?
(2)改写程序,将字符串用循环语句一个一个字符输出,再查看执行结果如何?

实现的思想、方法和技术(含数据结构、算法) 使用系统调用fork()创建两个子进程p1和p2,并且通 过getpid()输出其进程号,在子进程中输出各自的标识。完成了进程的创建,利用系 统调用sleep()调整父进程及各子进程的并发执行过程体会了进程间的并发特征。 本次实验比较简单,主要是运用fork()、getpid()、sleep()这几个系统调用函数,没有涉及算法问题。
1.fork()
功能:创建一子进程
2.sleep()
(1)功能:当前进程睡眠n秒钟
(2)使调度进程进入睡眠状态
3.wait()
功能:控制父进程与子进程同步

主要代码注释

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
int p1,p2;
while((p1=fork())-1);
if(p1
0)
{
printf(“brother1\n”);
exit(0);
sleep(5);
}
else
{
while((p2=fork())-1);
if(p2
0)
{
printf(“brother2\n”);
exit(0);
sleep(0);
}
wait(0);
printf(“father\n”);
}
return 0;
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论