实现工具 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(p10)
{
printf(“brother1\n”);
exit(0);
sleep(5);
}
else
{
while((p2=fork())-1);
if(p20)
{
printf(“brother2\n”);
exit(0);
sleep(0);
}
wait(0);
printf(“father\n”);
}
return 0;
}