gpt4 book ai didi

c - 如何停止 fgets 从 FIFO 文件中读取

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:11 25 4
gpt4 key购买 nike

我有两个进程,第一个是从标准输入读取并写入 FIFO 文件,第二个是等待来自 FIFO 文件的消息。

我正在使用这个程序结构:

while(run)
{
fgets(string, sizeof(string), fp);
}

当哨兵(运行)变为 0 以停止进程时,它并没有真正停止,因为它停留在 fgets() 函数中。我该如何解决?

我希望程序在 sentinel 变为 0 时等待消息,然后立即停止程序。

最佳答案

我认为你的 fifo 是在阻塞模式下打开的,所以在 fgets() 中,如果数据不可用,调用将被阻塞,直到 fifo 有一些新数据。

所以通过在 open 调用中使用 O_NONBLOCK 来避免在非阻塞模式下打开 FIFO。

在这里阅读更多。 http://www.tldp.org/LDP/lpg/node19.html

这样,如果没有可用数据,fgets 会返回错误,而不是卡住该调用。在接下来的 while 循环检查中,run 将为 0,因此它从这个循环中出来。

关于c - 如何停止 fgets 从 FIFO 文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714153/

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