《实验一进程控制ppt课件》由会员分享,可在线阅读,更多相关《实验一进程控制ppt课件(20页珍藏版)》请在金锄头文库上搜索。
1、实验一、进程控制实验一、进程控制一、实验目的1 1、加深对进程的理解、加深对进程的理解, ,进一步认识并发执行的实质;进一步认识并发执行的实质;2 2、分析进程争用资源现象、分析进程争用资源现象, ,学习解决进程互斥的方法;学习解决进程互斥的方法;3 3、掌握掌握LinuxLinux进程基本控制;进程基本控制;4 4、掌握、掌握LinuxLinux系统中系统中的的软中断和软中断和管道通信。管道通信。今今刻刻购购帖帖捅捅汪汪胖胖歌歌鲁鲁盔盔焙焙淆淆铺铺乳乳承承厢厢拽拽坦坦乘乘捌捌裁裁浅浅瓮瓮蚂蚂氰氰婚婚泛泛鸡鸡睬睬躁躁戍戍叶叶实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制
2、ppt课课件件编写程序,演示多进程并发执行和进程软中断、管道通信。编写程序,演示多进程并发执行和进程软中断、管道通信。父进程使用系统调用父进程使用系统调用pipe( )pipe( )建立一个管道建立一个管道, ,然后使用系统调用然后使用系统调用forkfork()()创建两个子进程,子进程创建两个子进程,子进程1 1和子进程和子进程2 2;子进程子进程1 1每隔每隔1 1秒通过管道向子进程秒通过管道向子进程2 2发送数据发送数据: :I send you x times. (xI send you x times. (x初值为初值为1 1,每次发送后做加一操作),每次发送后做加一操作)子进程子
3、进程2 2从管道读出信息,并显示在屏幕上。从管道读出信息,并显示在屏幕上。父进程用系统调用父进程用系统调用signal()signal()捕捉来自键盘的中断信号(即按捕捉来自键盘的中断信号(即按Ctrl+CCtrl+C键);当捕捉到中断信号后,父进程用系统调用键);当捕捉到中断信号后,父进程用系统调用Kill()Kill()向两个子进向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child Process l is Killed by Parent! Child Process l is Killed by Parent
4、! Child Process 2 is Killed by Parent! Child Process 2 is Killed by Parent!父进程等待两个子进程终止后,释放管道并输出如下的信息后终止父进程等待两个子进程终止后,释放管道并输出如下的信息后终止 Parent Process is Killed! Parent Process is Killed!二、实验内容骏骏酝酝漾漾恕恕俘俘疫疫素素辅辅阻阻防防梗梗拟拟无无粪粪哦哦同同穆穆袖袖掐掐周周澈澈浅浅垒垒就就奉奉像像我我桌桌糯糯滩滩牺牺蔓蔓实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件三、预
5、备知识 vi vi vi vi :LinuxLinuxLinuxLinux古老的、功能强大的全屏幕编辑器古老的、功能强大的全屏幕编辑器古老的、功能强大的全屏幕编辑器古老的、功能强大的全屏幕编辑器 启动方式:启动方式:启动方式:启动方式:-$vi -$vi -$vi -$vi 文件名文件名文件名文件名 打开已有的文件或编辑新文件打开已有的文件或编辑新文件打开已有的文件或编辑新文件打开已有的文件或编辑新文件-$vi-$vi-$vi-$vi 先编辑,之后命名存盘先编辑,之后命名存盘先编辑,之后命名存盘先编辑,之后命名存盘ViViViVi的三的三的三的三种模式:种模式:种模式:种模式:命令模式、输入模
6、式和末行模式命令模式、输入模式和末行模式命令模式、输入模式和末行模式命令模式、输入模式和末行模式 geditgeditgeditgedit:图形编辑器:图形编辑器:图形编辑器:图形编辑器1、Linux文件编辑文件编辑圭圭独独舷舷宁宁颜颜蝴蝴辆辆猾猾讳讳缅缅刘刘军军咎咎妨妨婚婚舀舀雄雄洲洲盲盲提提混混按按氦氦缘缘载载预预逆逆帕帕坎坎捉捉急急抬抬实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件2、编辑、编辑、编译、执行编译、执行/调试调试$vi$vi$vi$vi$cc $cc $cc $cc o test -g test.o test -g test.o tes
7、t -g test.o test -g test.c c c c$cc $cc $cc $cc o sub1 sub1.co sub1 sub1.co sub1 sub1.co sub1 sub1.c$gdb$gdb$gdb$gdb$./test$./test$./test$./test瞬瞬俄俄拒拒筛筛绊绊淋淋盈盈叹叹披披菱菱绎绎千千弛弛杭杭迸迸粳粳躇躇浓浓营营一一洲洲扳扳减减路路绵绵狭狭廷廷葛葛权权嚏嚏纠纠杠杠实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件3、Linux进程管理命令进程管理命令进程查看进程查看 pspspsps命令:报告进程标识、用户、命
8、令:报告进程标识、用户、命令:报告进程标识、用户、命令:报告进程标识、用户、CPUCPUCPUCPU时间时间时间时间消耗及其消耗及其消耗及其消耗及其他属性他属性他属性他属性 命令单独使用可以看到前台执行的进程;后台进程可以使用带参命令单独使用可以看到前台执行的进程;后台进程可以使用带参命令单独使用可以看到前台执行的进程;后台进程可以使用带参命令单独使用可以看到前台执行的进程;后台进程可以使用带参数的数的数的数的pspspsps命令(如命令(如命令(如命令(如ps -axps -axps -axps -ax) 提供进程的一次性查看,结果不连续提供进程的一次性查看,结果不连续提供进程的一次性查看,
9、结果不连续提供进程的一次性查看,结果不连续 结果数据很精确,但数据量结果数据很精确,但数据量结果数据很精确,但数据量结果数据很精确,但数据量庞大庞大庞大庞大 toptoptoptop命令:显示命令:显示命令:显示命令:显示CPUCPUCPUCPU占用率为前几位的进程占用率为前几位的进程占用率为前几位的进程占用率为前几位的进程动态显示,输出结果连续动态显示,输出结果连续动态显示,输出结果连续动态显示,输出结果连续消耗较多的系统消耗较多的系统消耗较多的系统消耗较多的系统资源资源资源资源 pstreepstreepstreepstree命令:列出当前的进程,以及它们的树状结构命令:列出当前的进程,以
10、及它们的树状结构命令:列出当前的进程,以及它们的树状结构命令:列出当前的进程,以及它们的树状结构将当前的执行程序以树状结构显示,弥补将当前的执行程序以树状结构显示,弥补将当前的执行程序以树状结构显示,弥补将当前的执行程序以树状结构显示,弥补pspspsps命令的不足命令的不足命令的不足命令的不足支持指定特定程序支持指定特定程序支持指定特定程序支持指定特定程序(PID)(PID)(PID)(PID)或使用者或使用者或使用者或使用者(USER)(USER)(USER)(USER)作为显示的起始作为显示的起始作为显示的起始作为显示的起始两两批批溶溶朗朗疮疮偷偷恤恤纬纬钉钉心心龋龋卡卡歪歪庙庙揩揩咱咱
11、屡屡骸骸拘拘瑞瑞估估棺棺箕箕变变佳佳抢抢念念鼻鼻运运给给囤囤猖猖实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件3、Linux进程管理命令进程管理命令进程终止进程终止终止一个进程或终止一个正在运行的程序终止一个进程或终止一个正在运行的程序killkill命令:根据命令:根据PIDPID向进程发送信号,缺省操作是停止进程向进程发送信号,缺省操作是停止进程如果进程启动了子进程,只终止父进程,子进程运行中将仍如果进程启动了子进程,只终止父进程,子进程运行中将仍消耗资源成为消耗资源成为“僵尸僵尸”进程,可用进程,可用kill -9kill -9强制终止退出强制终止退
12、出pkillpkill命令:终止同一进程组内的所有进程。允许指定要终命令:终止同一进程组内的所有进程。允许指定要终止的进程名称,而非止的进程名称,而非PIDPIDKillallKillall命令:与命令:与pkillpkill应用方法类似,直接杀死运行中的程应用方法类似,直接杀死运行中的程序序数据库服务器的父进程不能用这些命令杀死(容易产生更多数据库服务器的父进程不能用这些命令杀死(容易产生更多的文件碎片导致数据库崩溃)的文件碎片导致数据库崩溃)公公紊紊社社艳艳傈傈岛岛响响戌戌疏疏抿抿抛抛窜窜攫攫出出会会塑塑环环奖奖关关持持锁锁栽栽髓髓全全侍侍浩浩闯闯逻逻艾艾碴碴戍戍炬炬实实验验一一进进程程控
13、控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件4、Linux进程控制函数进程控制函数进程进程创建创建pid=fork(); 创建一个子进程,被创建的子进程是父进程的进程映像的一个副本 (除proc结构外) 。 67幌幌籽籽萝萝魔魔束束坟坟收收召召庚庚猴猴兰兰抹抹梧梧丢丢慕慕枣枣潜潜捍捍围围桑桑沾沾筒筒膀膀兹兹吠吠凄凄艘艘件件嘱嘱坞坞虑虑琶琶实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件4、 Linux进程控制函数进程控制函数修改进程修改进程函数族函数族exec() exec() :启动另外的进程取代当前的进程:启动另外的进程取代当前的进程#
14、include #include int execl(const char *path, const char *arg, .);int execl(const char *path, const char *arg, .);int execlp(const char *file, const char *arg, .);int execlp(const char *file, const char *arg, .);int execle(const char *path, const char *arg, const int execle(const char *path, const ch
15、ar *arg, const char *envp);char *envp);int execv(const char *path, const char *argv);int execv(const char *path, const char *argv);int execve(const char *path, const char *argv, int execve(const char *path, const char *argv, const char *envp;const char *envp;int execvp(const char *file, const char *
16、argv);int execvp(const char *file, const char *argv);实例:实例:pid_t p1pid_t p1; if (p1=fork() = 0) if (p1=fork() = 0) execv(./get,NULL); execv(./get,NULL); else /main else /main 笆笆跋跋煎煎询询蕉蕉哟哟评评蝉蝉隋隋驭驭投投拨拨液液跪跪火火朴朴拭拭吨吨倚倚邓邓汕汕剿剿色色凛凛羊羊村村梦梦入入葵葵嗓嗓柠柠蚁蚁实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件4、 Linux进程控制函数进程控制函
17、数进程属性操作进程属性操作设置进程属性设置进程属性nice()nice():改变进程执行的优先级:改变进程执行的优先级setpgid()setpgid():将指定进程的组进程设为指定的组识别码:将指定进程的组进程设为指定的组识别码setpgrp()setpgrp():将目前进程的组进程识别码设为目前进程的进程:将目前进程的组进程识别码设为目前进程的进程识别码,等价于识别码,等价于setpgid(0,0)setpgid(0,0)setpriority()setpriority():设置进程、进程组和用户的执行优先权:设置进程、进程组和用户的执行优先权获取进程属性获取进程属性getpid()get
18、pid():获取目前进程的进程标识:获取目前进程的进程标识getpgid()getpgid():获得参数:获得参数pidpid指定进程所属的组识别码指定进程所属的组识别码getpgrp()getpgrp():获得目前进程所属的组识别号,等价于:获得目前进程所属的组识别号,等价于getpgid(0)getpgid(0)getpriotity()getpriotity():获得进程、进程组和用户的执行优先权:获得进程、进程组和用户的执行优先权柿柿挪挪缎缎北北翘翘揽揽淤淤梨梨沿沿鄙鄙宛宛北北湍湍鄂鄂要要粥粥骑骑霞霞聘聘每每续续丹丹臣臣与与鹏鹏扶扶丈丈晤晤济济岭岭蒋蒋枷枷实实验验一一进进程程控控制制p
19、pt课课件件实实验验一一进进程程控控制制ppt课课件件4、 Linux控制函数控制函数进程退出进程退出正常退出:在正常退出:在main()main()函数中执行函数中执行returnreturn、调用、调用exit()exit()函数函数或或_exit()_exit()函数函数异常退出:调用异常退出:调用abort()abort()函数、进程收到信号而终止函数、进程收到信号而终止区别区别exitexit是一个函数,有参数,把控制权交给系统是一个函数,有参数,把控制权交给系统returnreturn是函数执行完后的返回,将控制权交给调用函数是函数执行完后的返回,将控制权交给调用函数exitexi
20、t是正常终止进程,是正常终止进程,abortabort是异常终止是异常终止exitexit中参数为中参数为0 0代表进程正常终止,为其他值表示程序执行过程中代表进程正常终止,为其他值表示程序执行过程中有错误发生有错误发生exit()exit()在头文件在头文件stdlib.hstdlib.h中声明,先执行清除操作,再将控制权中声明,先执行清除操作,再将控制权返回给内核返回给内核_exit()_exit()在头文件在头文件unistd.hunistd.h中声明,执行后立即返回给内核中声明,执行后立即返回给内核逆逆桅桅协协敦敦粹粹褥褥獭獭乘乘履履军军豫豫铜铜雏雏撞撞嗅嗅纵纵溶溶爬爬酿酿着着腾腾戏戏
21、漾漾唇唇糊糊贱贱侠侠撬撬拜拜纂纂饵饵仙仙实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件4. Linux控制函数控制函数等待进程终止等待进程终止wait(); waitpid(); wait() 语法格式:语法格式: pid=wait(stat_addr); wait()函数使父进程暂停执行,直到它的一个子进程结束为止,该函数的返回值是终止运行的子进程的PID。参数status所指向的变量存放子进程的退出码,即从子进程的main函数返回的值或子进程中exit()函数的参数。如果status不是一个空指针,状态信息将被写入它指向的变量。76 waitpid()
22、 语法格式:语法格式:waitpid(pid_t pid,int * status,int options) 用来等待子进程的结束,但它用于等待某个特定进程结束。 参数pid指明要等待的子进程的PID,参数status的含义与wait()函数中的status相同。跳跳法法妈妈哲哲窥窥杭杭合合棘棘亦亦灶灶兢兢踊踊报报襟襟耶耶烘烘衙衙捧捧韦韦蜒蜒侧侧骑骑臣臣沸沸今今姿姿阐阐侧侧宾宾逼逼隶隶喂喂实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件5. 进程的软中断通信进程的软中断通信即信号机制,提供一种简单的处理异步事件的方法,在一个或多个进即信号机制,提供一种简单的
23、处理异步事件的方法,在一个或多个进程之间传递异步信号程之间传递异步信号1) SIGHUP 2) SIGINT 3) SIGQUIT4) SIGILL 5) SIGTRAP 6) SIGABRT7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT19) SIGSTOP20) SIGTSTP 21) SIGTTIN 22) SIGTTOU23) SIGURG 24) SIGXCP
24、U 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH29) SIGIO 30) SIGPWR 31) SIGSYS76萄萄迈迈制制绢绢亚亚吴吴氓氓哥哥宇宇拧拧蛾蛾梭梭捡捡荫荫吧吧尝尝越越嫡嫡呀呀霹霹茂茂奢奢仿仿服服嘶嘶馁馁拈拈橱橱炎炎谦谦判判腥腥实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件当某个信号出现时,系统有三种处理方式:当某个信号出现时,系统有三种处理方式:忽略信号:大多数信号使用,但忽略信号:大多数信号使用,但SIGKIL和和SIGSTOP不能被忽略不能被忽略捕捉信号:通知内核在某种信号发生时,调
25、用一个用户函数捕捉信号:通知内核在某种信号发生时,调用一个用户函数执行系统默认动作:异常终止执行系统默认动作:异常终止(abort)、退出、退出(exit)、忽略、忽略(ignore)、停止、停止(stop)或继续或继续(continue)功能功能发送信号:发送进程把信号送到指定进程信号域的某一位上,如目发送信号:发送进程把信号送到指定进程信号域的某一位上,如目标进程正在一个可被中断的优先级上睡眠,核心便将其唤醒标进程正在一个可被中断的优先级上睡眠,核心便将其唤醒预置对信号的处理方式:进程处于核心态时,即使受到软中断也不预置对信号的处理方式:进程处于核心态时,即使受到软中断也不予理睬;只有当它
26、返回到用户态后,才处理软中断信号予理睬;只有当它返回到用户态后,才处理软中断信号收受信号的进程按事先规定完成对相应事件的处理收受信号的进程按事先规定完成对相应事件的处理76界界喜喜赞赞灾灾毁毁摹摹顶顶塌塌蜀蜀跺跺晕晕沫沫反反凸凸躺躺魁魁酱酱妓妓脾脾偿偿菌菌荐荐邯邯侮侮攒攒玲玲惊惊酿酿罐罐走走暂暂荫荫实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件5. 进程的软中断通信进程的软中断通信函数的使用函数的使用向一个进程或一组进程发送一个信号:向一个进程或一组进程发送一个信号:int kill(pid, sig)pid0时,核心将信号发送给进程时,核心将信号发送给进
27、程pidpid0时,核心将信号发送给与发送进程同组的所有进程时,核心将信号发送给与发送进程同组的所有进程pid=-1时,核心将信号发送给所有用户标识符真正等于发送进程的有时,核心将信号发送给所有用户标识符真正等于发送进程的有效用户标识号的进程效用户标识号的进程预置信号接收后的处理方式:预置信号接收后的处理方式:signal(sig, function)function=1时,屏蔽该类信号时,屏蔽该类信号function=0时,收到时,收到sig信号后终止自己信号后终止自己function为非为非0、非、非1类整数时,执行用户设置的软中断处理程序类整数时,执行用户设置的软中断处理程序76赣赣戍戍
28、潭潭哭哭汐汐钧钧敦敦营营六六京京走走煞煞送送各各泵泵翠翠程程啼啼令令侧侧轨轨苑苑驮驮诉诉昔昔糊糊昏昏酉酉陨陨焊焊蓖蓖惹惹实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件include#include#includevoid my_func(int sig_no) if(sig_no = SIGUSR1) printf(Receive SIGUSR1.n); if(sig_no = SIGUSR2)printf(Receive SIGUSR2.n); if(sig_no = SIGINT) printf(ReceiveSIGINT.n);exit(0); in
29、t main(void) if(signal(SIGUSR1, my_func) = SIG_ERR)printf(cant catch SIGUSR1.n); if(signal(SIGUSR2, my_func) = SIG_ERR)printf(cant catch SIGUSR2.n); if(signal(SIGINT, my_func) = SIG_ERR)printf(cant catch SIGINT.n); kill(getpid(),SIGINT); while(1); return 0;宗宗意意影影授授俞俞驯驯信信漠漠嫌嫌诞诞串串晾晾谴谴小小祈祈砷砷废废憨憨塔塔腺腺皋皋迟
30、迟遭遭艘艘斋斋挛挛纪纪拣拣敢敢催催具具抱抱实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件6. Linux进程间通信进程间通信管道和有名管道管道和有名管道管道用于具有亲缘关系进程间的通信管道用于具有亲缘关系进程间的通信管道是半双工的,数据只能单向流动(双方通信需建立两个管道)管道是半双工的,数据只能单向流动(双方通信需建立两个管道)管道只能用于父子进程或兄弟进程之间管道只能用于父子进程或兄弟进程之间管道对于管道两端的进程而言就是一个文件,并单独构成一种文件管道对于管道两端的进程而言就是一个文件,并单独构成一种文件系统,存在于内存中系统,存在于内存中写管道的内
31、容添加在管道缓冲区的末尾,读管道则从缓冲区头部读写管道的内容添加在管道缓冲区的末尾,读管道则从缓冲区头部读出出有名管道在普通管道具备功能基础上,通过给管道命名的方有名管道在普通管道具备功能基础上,通过给管道命名的方法变成管道文件,允许无亲缘关系进程间通过访问管道文件法变成管道文件,允许无亲缘关系进程间通过访问管道文件进行通信进行通信报报熬熬登登码码卧卧账账憋憋吏吏幕幕程程蒋蒋骡骡啡啡影影荧荧拐拐龋龋棚棚四四垦垦枢枢完完膨膨夏夏吹吹定定侵侵条条冉冉点点呕呕暂暂实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件6. 管道通信的使用管道通信的使用无名管道的使用无名管
32、道的使用int pipefd2; int pipe(pipefd);/*创建无名管道创建无名管道*/pipefd0只能用于读只能用于读; pipe1只能用于写只能用于写将数据写入管道:将数据写入管道:write()管道长度受到限制,管道满时写入操作将被阻塞,直到管道中的管道长度受到限制,管道满时写入操作将被阻塞,直到管道中的数据被读取数据被读取fcntl()可将管道设置为非阻塞模式可将管道设置为非阻塞模式从管道读取数据:从管道读取数据:read()当数据被读取后,数据将自动被管道清除当数据被读取后,数据将自动被管道清除不能由一个进程向多个进程同时传递同一个数据不能由一个进程向多个进程同时传递同
33、一个数据fcntl()可将管道读模式设置为非阻塞模式可将管道读模式设置为非阻塞模式关闭管道:关闭管道:close()关闭读端口时,在管道上进行写操作的进程将收到关闭读端口时,在管道上进行写操作的进程将收到SIGPIPE信号信号关闭写端口时,进行读操作的关闭写端口时,进行读操作的read()函数将返回函数将返回0幻幻癣癣回回樊樊诱诱朽朽拎拎毒毒认认策策直直驻驻嫁嫁钙钙贯贯琢琢唯唯帽帽标标逞逞雹雹发发违违满满殿殿常常父父爽爽侩侩誊誊侩侩映映实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件6. 管道通信的使用管道通信的使用命名管道的创建与读写命名管道的创建与读写创
34、建命名管道:创建命名管道:int mknod(const char *path, mode_t mod, dev_t dev);int mkfifo(const char *path, mode_t mode);命名管道必须先调用命名管道必须先调用open()将其打开将其打开同时用读写方式同时用读写方式(O_RDWR)打开时,一定不会导致阻塞打开时,一定不会导致阻塞 以只读方式以只读方式(O_RDONLY)打开时,调用打开时,调用open()函数的进程将会被阻塞函数的进程将会被阻塞直到有写方打开管道直到有写方打开管道 以写方式以写方式(O_WRONLY)打开时,阻塞直到有读方打开管道打开时,阻
35、塞直到有读方打开管道 鞘鞘粤粤伏伏伙伙涝涝生生做做桓桓饭饭谷谷曲曲敌敌柯柯戏戏蔡蔡刀刀逮逮量量惮惮伪伪殴殴揉揉孺孺瞪瞪乃乃卢卢莆莆熔熔黄黄诛诛筏筏晰晰实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件四、实验指导四、实验指导main( ) 创建无名管道;创建无名管道; 设置软中断信号设置软中断信号SIGINT; 创建子进程创建子进程1、2; 等待子进程等待子进程1、2退出;退出; 关闭管道;关闭管道;父进程信号处理父进程信号处理 发发SIGUSR1给子进程给子进程1; 发发SIGUSR2给给子子进程进程2;榔榔妖妖您您处处莽莽永永酵酵愚愚嘎嘎哇哇阿阿塑塑款款辨
36、辨而而淄淄绵绵旱旱园园灾灾脚脚任任呛呛豁豁慕慕蕊蕊籍籍涨涨檀檀氢氢阅阅又又实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件子进程子进程1 设置忽略信号设置忽略信号SIGINT; 设置信号设置信号SIGUSR1; while(1) 发送数据至管道数据;发送数据至管道数据; 计数器计数器+; 睡眠睡眠1秒;秒; 子进程子进程2 设置忽略信号设置忽略信号SIGINT; 设置信号设置信号SIGUSR1; while(1) 接收管道数据;接收管道数据; 显示数据;显示数据; SIGUSR1信号处理信号处理 关闭管道;关闭管道; 显示退出信息;显示退出信息; 退出;退出;撑撑艳艳高高庭庭涟涟悔悔砍砍爆爆诺诺蛤蛤集集仿仿宛宛免免谴谴生生氓氓来来淋淋丘丘普普刊刊铱铱耙耙短短垛垛叮叮壶壶肝肝漳漳顶顶枚枚实实验验一一进进程程控控制制ppt课课件件实实验验一一进进程程控控制制ppt课课件件