我有一个父进程,我用叉子创建了 2 个这样的子进程。
for(int i = 0; i < 2; i++) // loop will run n times (n=2)
{
pid = fork();
if(pid == 0)
{
printf("[son] pid %d from [parent] pid %d\n", getpid(), getppid());
execl("merge","merge",fifo1[i],fifo2[i],"2",NULL);
exit(0);
}
}
fifos 被命名为管道。我调用 execl 并在合并可执行文件上像这样打开命名管道。
if ((readfd = open(argv[1], O_RDONLY )) < 0) {
perror("server: can't open read fifo");
}
server(readfd);
我也像这样写一些父母给孩子的东西。 (我之前打开过fds,这里没有写)
for (int = 0; i < 2; i++) {
n = strlen(word);
if (write(fd_write[i], word, n) != n) {
perror("client: filename write error");
}
}
我想在一个孩子上写一些东西,在另一个孩子上写一些别的东西,但是这两个孩子都有相同的文件描述符(读取)4,就像我在同一个命名管道上写的一样。我做错了什么?