gpt4 book ai didi

c++ - 是否有类似 WaitNamedPipe 的函数或在 C++/linux 上实现此功能的方法? (所以这个过程不会无限期地阻塞在管道上)

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

我的 C++ 程序中有一个命名管道。子进程在其中写入一个值,父进程读取它。我通过 mkfifo 创建了管道,所有操作都是阻塞的(fifo 在尝试打开进行写入和 v.v. 之前无法打开进行读取)不幸的是,有时我的子进程不会因为子进程运行的程序中的错误而停止。在此外部程序中修复此错误不是我的任务,但我想确保父进程不会在阻塞的 open fifo 调用上无限期停止,而是在一段时间后继续(不读取管道中的值).

所以我需要它,比如 WaitNamedPipe 函数。此函数一直等待,直到超时间隔结束或指定命名管道的实例可用于连接。 http://ist.marshall.edu/ist480acp/namedpipes.html#WaitNamedPipe

实现这一点的另一种方法当然也可行。我在父进程中尝试了一个循环,在这个循环中它总是尝试打开管道进行读取,如果无法打开则休眠。这似乎没有效果,可能是因为父进程在第一次打开调用时阻塞了。

感谢您的帮助。

最佳答案

你想在你的 open(2) 中使用 O_NONBLOCK标志,请参阅 fifo(7) .然后使用 select(2)poll(2)等待输入(超时)。

关于c++ - 是否有类似 WaitNamedPipe 的函数或在 C++/linux 上实现此功能的方法? (所以这个过程不会无限期地阻塞在管道上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875130/

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