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