实验三进程管理1.实验目的和要求(1)复习操作系统中进程的基本概念。(2)掌握Linux操作系统进程创建,父子进程同步,进程终止基本方法。(3)理解进程并发运行的过程。2.实验环境Linux操作系统的计算机。3.实验内容(1)学习Linux操作系统中进程创建,父子进程同步,进程终止系统调用的格式与方法。主要涉及的系统调用有:fork()、wait()、exit()、getpid()、getppid()。学习将这些系统调用嵌入C语言程序中,观察程序运行过程并分析程序输出结果。1)用VI新建程序文件fork_wait.c。2)程序功能可参考如下:#includesys/types.h#includesys/wait.h#includeunistd.h#includestdio.h#includestdlib.hmain(){pid_tpid1,pid2;intstat;if(pid1=fork()0){printf(fork1error!);exit(1);//父创子进程出错,终止。}elseif(pid1==0)//父创子进程成功,子进程返回{if(pid2=fork()0)//子创孙进程出错。{printf(fork2error!);exit(1);//子进程出错终止。}elseif(pid20)//子进程返回后,子创孙进程成功。exit(0);//子进程终止。else{sleep(2);//pid2==0即:孙进程成功创建后入睡printf(Thisisgrandson\n,parentis%d\n,getppid());exit(0);//孙进程醒来,输出其父进程标识数后,终止。}}wait(&stat);//pid10即:父创子进程成功返回,父等待子进程终止。exit(0);//子进程终止后,父进程终止。}(2)学习系统调用signal()的使用方法,理解signal()功能,即重新设置进程对信号的处理方式。格式:signal(信号,方式);方式:SIG_IGN——忽略处理方式SIG_DFL——缺省处理方式(终止进程)int_func——一段用户预定义的信号处理函数名1)用VI新建程序文件signal.c。2)程序功能为在主函数中首先设置信号SIGINT(可由按键“Ctrl+C”产生)的处理方式,处理方式为执行一段用户预定义的信号处理函数int_func()。当进程接获从控制终端键入的“Ctrl+C”后转入执行int_func()函数,再次设置信号SIGINT的处理方式为缺省处理方式(终止进程)并显示信号值。观察程序运行过程并分析程序输出结果。3)参考程序如下:#includesignal.h#includestdio.h#includeunistd.hvoidint_func(intsig){printf(inint_func,receivesignal=%d\n,sig);signal(SIGINT,SIG_DFL);//SIG_IGN忽略处理方式//改变为缺省处理方式(终止进程!)return;}intmain(){signal(SIGINT,int_func);//函数调用设置信号处理方式while(1){printf(Helloworld!\n);sleep(1);//入睡1秒}}