gpt4 book ai didi

linux - 需要在每条消息后关闭读取端的 linux FIFO

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:22 25 4
gpt4 key购买 nike

这是我所做的,并且有效:

“服务器”端(阅读器)伪代码

mkfifo()
while (true){
open()
select(...NULL)
while (select... timeval(0)) {
read()
}
close()
}

“客户端”(作者)真正的 C 代码

int fd;
char * myfifo = "/tmp/saveterm.fifo";
char *msg = "MESSAGE";
fd = open(myfifo, O_WRONLY);
write(fd, msg, strlen(msg));
close(fd);

现在您看到我需要在每次读取事件后打开/关闭服务器上的 fifo。应该是这样吗?起初我只在循环之前打开它一次,但在第一条消息之后,“select”调用将永远不会再次阻塞,直到关闭并重新打开,并且总是为描述符返回 1 和 ISSET。

最佳答案

是的,应该是这样的。

命名管道的行为方式与匿名管道相同:它们都代表一个流,在最后一个写入者关闭它时终止。具体来说,读取器并不意味着永远挂起,以防万一将来的程序决定打开管道并继续写入。

如果您希望通过文件进行基于数据包的通信,那么在数据报模式下使用 Unix 套接字怎么样?

关于linux - 需要在每条消息后关闭读取端的 linux FIFO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54224215/

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