#include #include #include #include #include #include int main(int argc, char const *argv[]) { pid_t pid = fork(); if (pid == 0) // 子进程 { printf("子进程 %d 立即结束\n", getpid()); sleep(2); // 休眠 2 秒 // return 10; _exit(12); } else if (pid > 0) // 父进程 { printf("父进程 %d 运行中\n", getpid()); // 回收资源 (wait/waitpid) ,不然子进程资源依然占用 int status; // int pid2 = wait(&status); waitpid(pid, &status, 0); // 右移 8 位为状态值 // printf("%d 子进程返回的状态值: %d\n", pid, (status & 0xff00) >> 8); if (WIFEXITED(status)) { printf("%d 子进程返回的状态值: %d\n", pid, WEXITSTATUS(status)); } } return 0; }