[英]C program with fifo is not working, Unix console waits for input
我想制作一個使用 fifo 的簡單程序。 我編譯了這段代碼,當我運行它時,控制台正在等待輸入。 我試圖將 printf 放在第一行,但它沒有出現在控制台上。
int main(){
char* fifo = "./f";
int x = mkfifo(fifo, 0700);
if ( x == -1){
perror("error open");
exit(EXIT_FAILURE);
}
int f = open (fifo, O_WRONLY);
if ( f == -1){
perror("error open");
exit(EXIT_FAILURE);
}
close(f);
unlink(fifo);
return 0;
}
在控制台中我像這樣運行它
./x
什么也沒有發生,只是 cursor 正在下一行等待輸入。
為什么我的程序沒有運行?
從mkfifo()
手冊頁:
打開一個 FIFO 進行讀取通常會阻塞,直到某個其他進程打開同一個 FIFO 進行寫入,反之亦然。 有關 FIFO 特殊文件的非阻塞處理,請參見 fifo(7)。
因此,在您調用 open() 之后,您的進程將被暫停,直到另一個進程打開具有讀取訪問權限的 fifo。 在你的情況下,這永遠不會發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.