我試圖打開一個線程寫入的FIFO管道,同步都很好。 但是,出於可理解的原因,我需要它以追加模式打開。以追加模式打開管道
當我打開它如下:
ret_val = mkfifo(lpipename.c_str(), 0666);
if((pipehandler = open(lpipename.c_str(), O_RDWR)) < 1)
{
perror("Failed to open pipe file");
syslog(LOG_ERR, "Failed to open pipe file");
exit(1);
}
我沒有任何問題,我可以看到標記爲黃色的管道時「LS'-ING我的文件夾
但是當我嘗試以追加模式打開管道:
ret_val = mkfifo(lpipename.c_str(), 0666);
if((pipehandler = open(lpipename.c_str(), O_RDWR| O_APPEND)) < 1)
{
perror("Failed to open pipe file");
syslog(LOG_ERR, "Failed to open pipe file");
exit(1);
}
我在文件夾中根本看不到管道。 爲了記錄,我在任何一個選項中都收到錯誤 有沒有人有任何想法?如果有多個進程將數據追加到一個文件在一次
感謝
請注意,不是用perror顯式地打印到標準錯誤,你可以在大多數unixen中將'LOG_PERROR'添加到openlog()的選項標誌。 (你需要調用strerror()來得到與perror相同的文本。) –