我的C++程序无法打开命名管道
My C++ program cannot open named pipe
我正在尝试运行C++在Ubuntu下的Mac OS上完美运行的应用程序。该问题是由于打开命名管道失败造成的。
我按如下方式使用了mkfifo
:
pipe_name_ = std::string("/tmp/myfifo");
if (mkfifo(pipe_name_.c_str(), 0666) < 0) {
error_print("Cannot create a named pipen");
return -1;
}
if ((fd_ = open(pipe_name_.c_str(), O_RDONLY | O_CREAT, 0666)) < 0) {
error_print("Cannot open file description named %s %sn",
pipe_name_.c_str(), strerror(errno));
return -1;
}
但是,这会在屏幕上打印open()
的以下消息:
Cannot open file description named /tmp/myfifo Invalid argument
我的权限状态如下:
$ls -la /tmp/myfifo
prw-r----- 1 hamidb nonconf 0 Jun 20 13:35 /tmp/myfifo
$umask
0027
我想知道为什么它在Mac OS而不是Linux上运行良好。
我相信您open
有错误的标志,因为您没有创建文件。
它应该是
open(pipe_name_.c_str(), O_RDONLY)
相关文章:
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- IPC使用多个管道和分支进程来运行Python程序
- 如何创建函数管道,以便函数一个接一个地运行?
- Gstreamer 管道从命令 lne 到 c 代码
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 将旧管道转换为现代 openGL 时出现问题
- 如何使用管道在父级和子级之间来回传递文件
- 在没有管理员权限的情况下连接到同一网络中的命名管道
- 如何测量管道延迟?
- 我如何使用此程序管道多个命令?C++
- 先进先出:一个进程永远不会从管道读取
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- 使用模板而不是虚拟方法的管道模式
- 我可以写入关闭的套接字并强制纠正损坏的管道错误吗?
- 在 Azure DevOps 构建管道中使用英特尔C++编译器为 Linux 环境构建C++代码
- Opencv GStreamer管道在Raspberry Pi 4上不起作用
- 阻塞管道连接命名管道不触发
- GLib-ERROR:为GWakeup创建管道:打开的文件太多
- 向 vulkan 管道添加额外的 UBO 会停止所有几何体渲染
- 在命名管道中发送标准::字符串流