1. 程式人生 > 其它 >建立子程序,結束回收子程序

建立子程序,結束回收子程序

案例:

#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; }