2010-11-14 119 views
2

我想在C中使用命名管道,我遇到了一些困難。就匿名管道而言,我只是用r/w描述符創建管道,然後每當我想讀或寫時關閉另一端。這很容易實現,因爲我可以每次打開()和關閉()另一端。命名管道在c

使用命名管道,我有點困惑,我找到了指令mkfifo()它創建命名管道,但不明白如何正確讀取和寫入。

謝謝

+0

你的問題是不明確的時間。 'open'永遠不會與普通(匿名)管道一起使用,所以我想知道你是否在做你認爲你正在做的事情。 – 2010-11-14 21:31:48

+0

您可能會錯過fifo需要在一端寫作和另一端閱讀兩端開放的觀點。 FIFO上的任何讀/寫呼叫都被阻止。手冊頁在這裏http://linux.die.net/man/3/mkfifo。否則,你不會問這個問題,只是簡單地說明你的問題。你寫了什麼代碼,是什麼導致你的困惑? – vpit3833 2010-11-14 21:34:11

+2

閱讀[Beej的Unix IPC指南](http://beej.us/guide/bgipc/)。 – pmg 2010-11-14 21:34:57

回答

2

沒有什麼值得的。使用mkfifo來製作管道,然後讓你的進程讀寫任何文件。這也不是C特定的。管道已與mkfifo()創建後

mkfifo testfifo

貓testfifo

然後在另一個窗口

回聲 「你好,世界」> testfifo

4

:你可以這樣做(可以在過去的任何時候完成 - 命名管道存在於文件系統中,直到它們未被鏈接),讀取側使用open("/path/to/pipe", O_RDONLY)打開它,寫入側用打開它。

之後,它可以像匿名管道一樣使用。

0

我想你應該只使用管道,因爲他們處理不同進程之間的數據傳輸,無論每個proccess需要