簡體   English   中英

我的C ++程序無法打開命名管道

[英]My C++ program cannot open named pipe

我正在嘗試運行在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上能正常工作。

我認為您沒有open文件的錯誤標志,因為您沒有創建文件。

它應該是

open(pipe_name_.c_str(), O_RDONLY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM