如何动态创建多个未命名的管道?

时间:2018-04-22 11:36:34

标签: c operating-system pipe fork

假设我们有来自同一父级的N个子进程。有没有办法,根据有多少个子进程,创建多个管道而不使用多个声明?

避免这样的事情:

int fd[2];
pipe(fd);
int fd2[2];
pipe(fd2);
int fd3[2];
pipe(fd3);

提前多多感谢。

1 个答案:

答案 0 :(得分:2)

创建一个动态大小的数组,然后为每个子进程调用pipe()一次。

int *fds = malloc(2*n * sizeof *fds);

for (int i = 0; i < n; ++i) {
    pipe(&fds[i * 2]);
}