实验三进程管理及进程通信实验环境:Linux操作系统实验目的:(1)利用Linux提供的系统调用设计程序,加深对进程概念的理解
(2)体会系统进程调度的方法和效果
(3)了解进程之间的通信方式以及各种通信方式的使用
实验方法:用vi编写c程序(假定程序文件名为prog1
c)编译程序$gcc-oprog1
oprog1
c或$cc-oprog1
oprog1
/prog1
o实验内容及步骤:实验1编写程序
显示进程的有关标识(进程标识、组标识、用户标识等)
经过5秒钟后,执行另一个程序,最后按用户指示(如:Y/N)结束操作
编程截图:运行结果:实验2参考例程1,编写程序
实现父进程创建一个子进程
体会子进程与父进程分别获得不同返回值,进而执行不同的程序段的方法
例程1:利用fork()创建子进程/*用fork()系统调用创建子进程的例子*/main(){inti;if(fork())/*父进程执行的程序段*/i=wait();/*等待子进程结束*/{printf("Itisparentprocess
\n");printf("Thechildprocess,IDnumber%d,isfinished
\n",i);}else{Printf(“Itischildprocess
\n”);Sleep(10);Exit();}}运行结果:思考:子进程是如何产生的
又是如何结束的
子进程被创建后它的运行环境是怎样建立的
答:是由父进程用fock()函数创建形成的,通过exit()函数自我结束,子进程被创建后核心将其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程所有文件
实验3参考例程2,编写程序
父进程通过循环语句创建若干子进程
探讨进程的家族树以及子进程继承父进程的资源的关系
例程2:循环调用fork()创建多个子进程