掌握pid_t c:fork函数在C语言进程管理中的实战教程与错误避免
include <stdio.h>
include <unistd.h> // 放getpid和getppid的地方
int main() {
pid_t my_pid = getpid(); // 我的身份证
pid_t parent_pid = getppid(); // 我爸的身份证
printf("我是进程,我的ID是: %d\n", my_pid);
printf("我爸的ID是: %d\n", parent_pid);
return 0;
}
include <unistd.h>
... pid_t pid = fork(); // 魔法发生在这里!
pid_t worker1 = fork(); // 启动数据处理子进程 pid_t logger = fork(); // 启动日志记录子进程
// 粗放等待:谁先结束就处理谁 wait(NULL); // 管它是哪个进程呢!
// 精准狙击:只等待日志记录进程 waitpid(logger, NULL, 0);
pid_t child = fork(); child == 0 ? run_task() : log("启动了子进程");
pid_t child = fork(); if (child == 0) {
execl("/bin/ls", "ls", "-l", NULL);
// 忘记检查返回值!
printf("这行文字永远不会出现\n");
}
// 错误示范:父子进程未分离任务 for (int i=0; i<3; i++) { pid_t child = fork(); if (child == 0) { printf("子进程%d启动\n", i); } }