建立子程序,結束回收子程序
阿新 • • 發佈:2022-03-30
案例:
#include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> #include <stdlib.h> int main(void) { int i = 5; int status;//接收子程序退出時的exit返回值 pid_t pid_1 = fork();//建立一個子程序1 if(pid_1 < 0)//創建出錯 { perror("fork error");return -1; } if(0 == pid_1)//子程序1 { while(i--) { printf("我是子程序1!\n"); sleep(1); } exit(100); } while(1) { printf("我是父程序0!\n"); sleep(1); /*wait(&status);//阻塞函式等待子程序退出 //WEXITSTATUS(status)即為子函式退出時的返回值 printf("%d",WEXITSTATUS(status));*/ //第一個引數當為-1時為接受任意子程序的返回值 //WNOHANG代表當子程序沒有結束時,則立即返回。 pid_t ret = waitpid(-1, NULL, WNOHANG); //此時非阻塞,即:不會等待子程序結束。 if(ret > 0) { printf("子程序的退出資源已回收!\n"); break; } else { printf("子程序還未結束....\n"); } } printf("我是???\n"); return 0; }