子进程

发布时间 2023-04-06 17:33:25作者: 信奉上帝的小和尚
#include <stdio.h>
#include <unistd.h>
int main(void){

    //创建一个子进程,创建完成后,通过返加值pid来判断是父进程还是子进程,父进程中pid!=0 子进程中pid==0
    int pid = fork();
    if (pid == 0){
        // 说明是子进程
        printf("子进程pid = %d\n",pid);
        return 0;
    }
    // 说明是子进程
    printf("父进程pid = %d\n",pid);
    return 0;
}
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main(void) {

    pid_t pid = fork();
    if (pid == 0) {
        sleep(10);
        return 0;
    }
    int status;
    printf("开始回收\n");
    pid_t childPid = wait(&status);
    printf("回收了pid为%d的子进程,退出状态为%d\n", childPid, status);
    if (WIFEXITED(status)){
        // 正常终止
        printf("正常终止\n");
    }else{
        // 异常终止
        printf("异常终止\n");
    }
    if (WIFSIGNALED(status)){
        // 异常终止
        printf("异常终止\n");
    }else{
        // 正常终止
        printf("正常终止\n");
    }
    return 0;
}