Topics• Exceptions•class17.ppt15-213 – 2 –class17.pptExceptionsexceptioneventOSexception(optional)currentnext – 3 –class17.ppt•––•••simultaneously – 4 –class17.pptProcesses Concurrently•– er•––•–– – 5 –class17.ppt• fork()–• exit()––• wait() waitpid()• execl() execve()–••– – 6 –class17.ppt {printf("L0\n");printf("L1\printf("L2\n");fork();}}printf("Bye\n");}•L1 L2 ByeByeByeByeL0 – 7 –class17.ppt {printf("L0\n");printf("L1\printf("L2\n");fork();}}printf("Bye\n");}•ByeL0ByeL1ByeL2Bye – 8 –class17.pptlinux !"#$% &'linuxps ( )*") +,+-.''0/''0/''tcsh-.''0/''0/'1234 &'-.''0/''0/''12345%16 &-.''0/''0/''pslinux>78899:; !%linuxps ( )*") +,+-.''0/''0/''tcsh &<-.''0/''0/''psZombieExample• ps•=>?@A>BCDEF{?AEA>BCEFGGHFIJ KLM?N@KJprintfEOP QBR?STU?SVLM?N@WXYZG[@\n",getpid());exit(0);\QN]QIprintfEO^ _SS?SVXTBQSUWXYZG[@\n",getpid());`M?NQEaFbJ KYSA?S?UQN>>cKJ}} – 9 –class17.pptlinux !+"#$%linuxps ( )*") +,+-.''0/''0/''tcsh-.''0/''0/'1234-.''0/''0/''pslinux>3$$linux> ps ( )*") +,+-.''0/''0/''tcsh,-.''0/''0/''psNonterminatingChildExample• ps•=>?@A>BCEF{?AEA>BCEFGGHFIJ KLM?N@KJprintfEO^ _SS?SVLM?N@WXYZG[@\n",getpid());`M?NQEaFbJ KYSA?S?UQN>>cKJ\QN]QIprintfEOP QBR?STU?SVXTBQSUWXYZG[@\n",getpid());exit(0);}} – 10 –class17.pptTask•• ./ •– sort command––Steps••6$%5stdlib.h>6$%5stdio.h>6$%5unistd.h>6$%54-4-.4#6$%5#int main(66#argv[]){623argcargv);complete(cnt);'} – 11 –class17.ppt• fork execlint invoke(66#argv[]){int i;125argc 23211.26441123'"#$%/2342.2!printf2644%421$4\getpidargv[i]);1execl4242argv-2argv'5'perror("sort");exit(1);}6##4.2}}argc-1;} – 12 –class17.ppt• wait2%62!.$6){int6#$%4412'5cntpidwpid6#$%441 * *6#$%44printf2644%62!.$%#44%\n",wpid* 6#$%44elseprintf2644%!%2!$$-\wpid);}} – 13 –class17.pptSignalsSignals•–••• ved.TerminateSIGALRM14SIGSEGV111792Num.IgnoreSIGCHLDTerminateSIGKILLcntl-c)TerminateSIGINTDescriptionDefaultName – 14 –class17.pptkill Program••–pid–SIGKILLkill•kill(pid linux !+"#$%linuxps ( )*") +,+-.''0/''0/''tcsh-.''0/''0/'1234-.''0/''0/''pslinux>3$$–4linux> ps ( )*") +,+-.''0/''0/''tcsh,-.''0/''0/''ps – 15 –class17.ppt•=>?@A>BCaEF{pidUpid[N];int i;int child_status;A>BE?GHb? b?F?AEEpid?GA>BCEFFGGHFIJ KLM?N@YSA?S?UQ>>cKJwhile(1);}A>BE?GHb? b?FIprintfEO?NN?SVcB>Q]][@\SOWpid[i]);kill(pid?WYY PFb}A>BE?GHb? b?FIpidUwpidG`T?UEM?N@]UTU_]Fb?AEYYPZEM?N@]UTU_]FFprintfEOLM?N@[@UQBR?STUQ@`?UMQ?U]UTU_][@\n",wpidWYPPPEM?N@]UTU_]FFbelseprintfEOLM?N@[@UQBR?STUQ@TS>BRTNN\SOWwpid);}} – 16 –class17.ppt•Function• signal(sig – sig handler–2%int_handler(4){printf2644%6%4$%\getpidsig);exit(0);}2%123{pidpid[N];int6#$%444$ int_handler);} – 17 –class17.ppt•occurred•?SU>_SUGHb=>?@M?N@MTS@NQBE?SU]?V){int child_status;pidUpidG`T?UEM?N@]UTU_]Fbccount--;printfEO^QQ?=Q@]?VSTN[@AB>RcB>Q]][@\SOWsigWpid);}=>?@A>BCaEF{pidUpid[N];int?WM?N@]UTU_]bccountG b]?VSTNEYLZWM?N@MTS@NQBFbA>BE?GHb? b?F?AEEpid?GA>BCEFFGGHFIJ KLM?N@?UKJexit(0);}`M?NQEccountHFcT_]QEFbJ K_]cQS@_SU?N]?VSTN>_B]KJ} – 18 –class17.pptSignals• wait=>?@M?N@MTS@NQBE?SU]?V){int
View Full Document