Linux创建进程树的啊c语言代码
时间: 2024-10-27 08:10:36 浏览: 38
在Linux中,通过系统调用 fork() 和 exec() 可以创建一个进程树。fork() 创建一个新的进程,并将当前进程的所有信息复制一份给新进程,而 exec() 则替换新进程的程序映射。下面是一个简单的C语言代码示例,展示了如何创建一个基本的进程树:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
// 父进程函数
void parent_task(int num) {
pid_t child_pid;
printf("Parent process: Creating child %d\n", num);
// Fork 子进程
if ((child_pid = fork()) == -1) { // 如果fork失败
perror("Fork failed");
exit(EXIT_FAILURE);
} else if (child_pid == 0) { // 当前是子进程
execlp("/bin/ls", "ls", "-l", NULL); // 执行ls命令并退出
perror("Exec failed");
_exit(EXIT_FAILURE); // 使用_exit防止资源泄露
} else { // 当前是父进程
wait(NULL); // 等待子进程结束
printf("Parent process: Child %d finished.\n", num);
}
}
int main() {
for (int i = 1; i <= 3; ++i) {
parent_task(i);
}
return 0;
}
```
在这个例子中,`parent_task` 函数首先通过 `fork()` 创建子进程,然后在子进程中使用 `execlp` 执行指定的命令(这里选择的是列出目录内容)。父进程会等待每个子进程结束后继续。
阅读全文