gpt4 book ai didi

c - 命名管道创建

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:46 26 4
gpt4 key购买 nike

我正在尝试使用命名管道。我有一个读取信息的进程和另一个将信息写入管道的进程。

这是我的阅读器进程的精简代码:

main (int argc, char *argv[]) {
int fd, mkn;
char message[100];

if(unlink("aPipe") == -1) {
perror("Error unlinking:");
}


if((mkn = mknod("aPipe", S_IFIFO, 0)) < 0){
perror("Error mknod:");
}

if(chmod("aPipe", 0660)) {
perror("Error chmod:");
}

if(fd = open("aPipe", O_RDONLY) < 0) {
perror("Error abriendo el PIPE");
}

printf("going to read..\n");

close(fd);
}

但它卡在了这一行:if(fd = open("aPipe", O_RDONLY) < 0)永远,我真的不明白为什么。

如果您知道哪个手册页说明了这里发生的事情,请告诉我:)

最佳答案

FIFO 有点奇怪; open() 作为写入者将阻塞直到有读取者,反之亦然。更糟糕的是,就像真正的管道一样,当写入端关闭它的末端时,读取端将永远返回 EOF;您必须关闭并重新打开(为下一位读者阻塞)。或者你open(fifo, O_RDWR)然后你需要一些方法来知道编写器何时完成,例如让它只使用一行或有一个带内 EOF 数据包。

关于c - 命名管道创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com