2012-05-12 105 views
2

我似乎無法打開Windows命名管道不止一次從PHP:爲什麼我不能多次打開一個命名管道?

$pipe1 = fopen($pipeName, 'r+'); // (1) 
fclose($pipe1); 
$pipe2 = fopen($pipeName, 'r+'); // (2) 
fclose($pipe2); 

(1)成功,我可以寫到管道或打開閱讀它的阻塞。

(2)失敗

的fopen(\\ \管\編碼。):未能打開流:無效的參數

「無效參數」 似乎是指到模式,但我嘗試了(1)和(2)之間的所有不同模式組合,沒有區別。無論它處於同一個進程還是另一個進程中,它也會失敗。

我正在與創建所述管:

CreateNamedPipe("\\\\.\\pipe\\encoding", 3, 0, 5, 512, 512, 0, 0); 

其中「3」使得它的讀/寫和管「5」是可以被創建的實例的最大數目。我也試過CreateNamedPipe的不同參數組合,但無濟於事。

有什麼特別的我失蹤了Windows命名管道?

+2

」服務器進程必須調用DisconnectNamedPipe,才能使用ConnectNamedPipe函數將句柄連接到另一個客戶端,從而將管線句柄與其先前的客戶端斷開連接。「 –

+0

@ antti.huima:那是我的問題,謝謝! (你應該寫出一個真實的答案!) – ladenedge

+0

大聲笑ok ................ –

回答

2

「的服務器進程必須調用DisconnectNamedPipe從之前的客戶端斷開管手柄前手柄可以通過使用ConnectNamedPipe功能被連接到另一客戶端」。 「

+0

+1對於真正的答案:P – tigrang

相關問題