我試圖將字符串發送到unix中的管道。當我逐行調試過程時,調用mkfifo()將在與源代碼相同的目錄中創建該文件。但是,當我到達open()調用時,調試器將不再能夠繼續。我不知道爲什麼它無法訪問管道文件。將字符串寫入管道
這裏是有問題的代碼:
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int fd;
char * myfifo = "myfifo";
/* create the FIFO (named pipe) */
mkfifo(myfifo, 0666);
/* write "Hi" to the FIFO */
fd = open(myfifo, O_WRONLY);
write(fd, "Hi", sizeof("Hi"));
close(fd);
/* remove the FIFO */
unlink(myfifo);
return 0;
}
任何建議表示讚賞。謝謝。
經常檢查從返回的值open()和write()和mkfifo()這樣的檢查會告訴程序什麼失敗(在這種情況下,可能是write(),但是,在程序的第一次運行後,任何連續運行都會失敗mkfifo (),因爲fifo已經存在 – user3629249