fork多个子进程输出不同的值c语言实现
时间: 2024-12-04 12:21:47 浏览: 16
在C语言中,你可以使用`fork()`系统调用来创建子进程,并通过独立的I/O流让每个子进程输出不同的值。以下是简单的一个例子:
```c
#include <stdio.h>
#include <unistd.h>
#define NUM_PROCESSES 5
void child_process(int id) {
// 每个子进程都有自己的标准输入输出流副本
FILE *child_stdin = freopen(NULL, "w", stdin);
FILE *child_stdout = freopen(NULL, "w", stdout);
fprintf(child_stdout, "This is the output from process %d.\n", id);
printf("Child %d is writing to its own stdout\n", id);
}
int main() {
pid_t pid;
for (int i = 0; i < NUM_PROCESSES; i++) {
if ((pid = fork()) == 0) { // 如果是子进程
child_process(i); // 调用子进程函数
exit(0); // 子进程退出
} else if (pid > 0) { // 父进程
printf("Parent process %d just created child process %d.\n", getpid(), pid);
} else { // fork失败
perror("Fork failed");
return -1;
}
sleep(1); // 给每个子进程一些时间完成输出
}
return 0;
}
```
在这个例子中,`main()`函数会创建指定数量的子进程,每个子进程都会运行`child_process()`函数。由于`freopen()`将标准输入输出流重定向到各自的过程,所以每个子进程会有独立的输出。
阅读全文