作业社区
探索学习新天地,共享知识资源!
城仔 的学生作业:
#include #include #include #include #include #include int main() { pid_t cpid,rpid; int statusA,statusB; cpid = fork(); if(cpid == -1){ perror("[error] fork()"); exit(EXIT_FAILURE); }else if(cpid == 0){ fprintf(stdout,"\t chlid1 %d running .\n",getpid()); raise(SIGSTOP); fprintf(stdout,"\t child1 %d exit \n",getpid()); sleep(2); exit(EXIT_SUCCESS); }else if(cpid > 0){ int ret1; sleep(1); ret1 = kill(cpid,SIGKILL); if(ret1 == 0){ fprintf(stdout,"Father %d killed child %d\n",getpid(),cpid); } waitpid(cpid,&statusA,0); fprintf(stdout,"father %d exit \n",getpid()); rpid = fork(); if(rpid == -1){ perror("[error] for()"); exit(EXIT_FAILURE); }else if(rpid == 0){ fprintf(stdout,"\t chlid2 %d running .\n",getpid()); raise(SIGSTOP); fprintf(stdout,"\t child2 %d exit \n",getpid()); sleep(5); exit(EXIT_SUCCESS); }else if(rpid > 0 ){ int ret; sleep(1); ret = kill(rpid,SIGKILL); if(ret == 0){ fprintf(stdout,"Father %d killed child %d\n",getpid(),rpid); } waitpid(rpid,&statusB,0); fprintf(stdout,"father %d exit \n",getpid()); exit(EXIT_SUCCESS); } printf("the child process < %d > has exit code < %d >.\n",cpid,WEXITSTATUS(statusA)); printf("the child process < %d > has exit code < %d >.\n",rpid,WEXITSTATUS(statusB)); } return 0; } 【图片】
+100