Linux 使用读取/写入文件的pipe()的替代实现

Linux 使用读取/写入文件的pipe()的替代实现,linux,pipe,Linux,Pipe,我在Linux中有一个pipe()的替代实现: int pipe(int pipefd[2]) { char *name = unique_name(); pipefd[1] = open(name, O_WRONLY|O_CREAT|O_TRUNC, 0600); pipefd[0] = open(name, O_RDONLY, 0600); unlink(name); return 0; } 此实现是否是类似于中的pipe()的合法替代方案?如果否,

我在Linux中有一个
pipe()
的替代实现:

int pipe(int pipefd[2]) {
    char *name = unique_name();
    pipefd[1] = open(name, O_WRONLY|O_CREAT|O_TRUNC, 0600);
    pipefd[0] = open(name, O_RDONLY, 0600);
    unlink(name);
    return 0;
}

此实现是否是类似于中的
pipe()
的合法替代方案?如果否,原因是什么?

此实现是错误的,因为从管道读取应该返回0而不是阻塞

根据pipe()的语义,在写入之前读取时,进程将被阻止并等待数据。在这个实现中,先读后写返回0(EOF)