进程与进程管理.ppt

main() { int child, i=2; if((child=fork()) == –1) {printf(fork error. );exit();} if(child==0) {i=i+3; printf(“i=%d\n”,i); } i=i+5; printf(“i=%d\n”,i); } ① 更换进程执行代码,更换正文段,数据段 ② 调用格式:exec (文件名,参数表,环境变量表) ③ 例 execlp(“max”,15,18,10,0); execvp(“max”,argp) (2) 程序范例 #include stdio.h #include stdlib.h #include pthread.h void thread(void) { int i; for(i=0;i3;i++) printf(This is a pthread.\n); } main( ) { int n; …. if(fork()==0) {printf(“a”); exit(0); } wait(n); printf(“b”); } main() { int p1,p2,p3,p4,p5,pp1,pp2; printf(“程序开始执行”); if ((p1=fork( )== 0) { printf(“进程proc1执行”); exit(1); } else if ((p2=fork() )== 0) { printf(“进程proc2执行”); exit(1); } pp1=wait(pp1); /* 等待,直到子进程终止 */ pp2=wait(pp2); /* 等待,直到子进程终止 */ if ((p3=fork())== 0){ printf(“进程proc3执行”); } else if((p4=fork())== 0) { printf(“进程proc4执行”); } else if((p5=fork())== 0) { printf(“进程proc5执行”); exit(1); } printf(“整个程序终止“); exit(0); } a. 画出描述子进程执行先后次序的进程流图。(各进程 分别用其对应的函数名或包含其进程号的符号名标识)。 b. 这个程序执行时最多可能有几个进程同时存在?同时 存在的进程数最多时分别是哪几个进程? c. 程序执行时,“整个程序终止”被输出几次?分别是 哪些进程输出的? b. 最多4个进程同时存在,分别是main、p3、p4、p5 。 c. 3次,main、p3、p4 。 #include sys/types.h #include sys/wait.h int main () { pid_t pid; int status; pid=fork(); if (pid==0) { p6();exit(); } else{ pid=fork(); if (pid==0 ) { p5();exit(); } } wait(status); wait(status); p7(); } #include stdio.h #include pthread.h int A; void subp1() { printf(A in thread is %d\n,A); A = 10; } main() {

文档评论(0)

1亿VIP精品文档

相关文档