www.pudn.com > 7_code.rar > experiment_1.c
/*exc.c实验一源码*/ #include#include #include #include #include int main(void) { pid_t child1,child2,child; /*创建两个子进程*/ child1 = fork(); child2 = fork(); /*子进程1的出错处理*/ if( child1 == -1 ){ perror("child1 fork"); exit(1); } /*在子进程1中调用execlp函数*/ else if( child1 == 0 ){ printf("In child1: execute 'ls -l'\n"); if(execlp("ls","ls","-l",NULL)<0) perror("child1 execlp"); } /*子进程2的出错处理*/ if( child2 == -1 ){ perror("child2 fork"); exit(1); } /*在子进程2中使其暂停5秒*/ else if( child2 == 0 ){ printf("In child2: sleep for 5 seconds and then exit\n"); sleep(5); exit(0); } /*在父进程中等待子进程2的退出*/ else{ printf("In father process:\n"); do{ child = waitpid( child2, NULL, WNOHANG ); if( child ==0 ){ printf("The child2 process has not exited!\n"); sleep(1); } }while( child == 0 ); if( child == child2 ) printf("Get child2\n"); else printf("Error occured!\n"); } }