簡體   English   中英

C 程序與 fifo 不工作,Unix 控制台等待輸入

[英]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.

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