实现工具 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;
 }


 

 









