- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我运行这段代码时,boost::process::std_out > "myfifo"
行没有返回,因为它正在等待 open
调用返回,这不是因为“myfifo”是一个 fifo。这是错误吗?
#include <boost/process.hpp>
int main(int, char**)
{
mkfifo("myfifo", 0600);
auto x = boost::process::std_out > "myfifo";
return 0;
}
最佳答案
这很有趣,因为您使用的代码的行为是未定义的。
参数关键字实际上是构建供执行程序使用的扩展属性的“DSL”。
尽管模板表达式的实现细节是未指定的,但人们会期望单独的参数对象没有可观察到的副作用。
这使您观察到的挂起非常显着。我认为当参数表达式的单纯组合有副作用时(顺便说一句,甚至在破坏时),这是一个薄弱的设计。恕我直言,如果操作仅在流程执行时运行,那就更好了。
您可以将此报告给库开发人员(尽管他们可能会说“不要那样做”并将其标记为“设计使然”)。
事实上 bp::std_out > "filename"
,不会尝试打开 fifo。它会尝试创建文件(因为它是只写的,而您打算向其中写入数据)。
如果你想写入一个 fifo,你需要使用 pipe
或 async_pipe
工具。
关于c++ - boost::process::std_out 没有返回,因为它试图打开一个 fifo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47822628/
我无法用标准输出解决问题 笑,我在 Unix 操作系统上,所以 STD_IN = 0,STD_OUT = 1,STD_ERR = 2 的文件描述符,基本上我试图关闭与标准输出,然后用我要写入的文件覆盖
当我运行这段代码时,boost::process::std_out > "myfifo" 行没有返回,因为它正在等待 open 调用返回,这不是因为“myfifo”是一个 fifo。这是错误吗? #i
我是一名优秀的程序员,十分优秀!