0
我想运行C++应用程序,在Ubuntu下的Mac OS上完美工作。问题是由于打开命名管道失败。我的C++程序无法打开命名管道
我用mkfifo
如下:
pipe_name_ = std::string("/tmp/myfifo");
if (mkfifo(pipe_name_.c_str(), 0666) < 0) {
error_print("Cannot create a named pipe\n");
return -1;
}
if ((fd_ = open(pipe_name_.c_str(), O_RDONLY | O_CREAT, 0666)) < 0) {
error_print("Cannot open file description named %s %s\n",
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上。
您正在使用C或C++?你同时说两个.. – NathanOliver
当'open'(或其他系统调用)失败时,请检查'errno'来查看错误是什么。使用例如'strerror'获取可打印的错误字符串。 –
我正在使用C++来编译 –