我想在C中使用命名管道,我遇到了一些困難。就匿名管道而言,我只是用r/w描述符創建管道,然後每當我想讀或寫時關閉另一端。這很容易實現,因爲我可以每次打開()和關閉()另一端。命名管道在c
使用命名管道,我有點困惑,我找到了指令mkfifo()
它創建命名管道,但不明白如何正確讀取和寫入。
謝謝
我想在C中使用命名管道,我遇到了一些困難。就匿名管道而言,我只是用r/w描述符創建管道,然後每當我想讀或寫時關閉另一端。這很容易實現,因爲我可以每次打開()和關閉()另一端。命名管道在c
使用命名管道,我有點困惑,我找到了指令mkfifo()
它創建命名管道,但不明白如何正確讀取和寫入。
謝謝
沒有什麼值得的。使用mkfifo來製作管道,然後讓你的進程讀寫任何文件。這也不是C特定的。管道已與mkfifo()
創建後
mkfifo testfifo
貓testfifo
然後在另一個窗口
回聲 「你好,世界」> testfifo
:你可以這樣做(可以在過去的任何時候完成 - 命名管道存在於文件系統中,直到它們未被鏈接),讀取側使用open("/path/to/pipe", O_RDONLY)
打開它,寫入側用打開它。
之後,它可以像匿名管道一樣使用。
我想你應該只使用管道,因爲他們處理不同進程之間的數據傳輸,無論每個proccess需要
你的問題是不明確的時間。 'open'永遠不會與普通(匿名)管道一起使用,所以我想知道你是否在做你認爲你正在做的事情。 – 2010-11-14 21:31:48
您可能會錯過fifo需要在一端寫作和另一端閱讀兩端開放的觀點。 FIFO上的任何讀/寫呼叫都被阻止。手冊頁在這裏http://linux.die.net/man/3/mkfifo。否則,你不會問這個問題,只是簡單地說明你的問題。你寫了什麼代碼,是什麼導致你的困惑? – vpit3833 2010-11-14 21:34:11
閱讀[Beej的Unix IPC指南](http://beej.us/guide/bgipc/)。 – pmg 2010-11-14 21:34:57