文件描述符和执行

时间:2021-05-18 17:38:59

标签: c pipe fork fifo named

我有一个父进程,我用叉子创建了 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,就像我在同一个命名管道上写的一样。我做错了什么?

0 个答案:

没有答案
相关问题