[英]About pipe behavior in windows
hPipe = CreateNamedPipe(
lpszPipename, // pipe name
PIPE_ACCESS_DUPLEX, // read/write access
PIPE_TYPE_MESSAGE | // message type pipe
PIPE_READMODE_MESSAGE | // message-read mode
PIPE_WAIT, // blocking mode
PIPE_UNLIMITED_INSTANCES, // max. instances
BUFSIZE, // output buffer size
BUFSIZE, // input buffer size
0,
我對此有兩個問題:
1
或2
呢? 2
,假設其中一個管道被A連接,則B嘗試連接lpszPipename
,是否可以確保B會連接到沒有人連接的那個管道? 如果使用了FILE_FLAG_FIRST_PIPE_INSTANCE標志,則對具有相同名稱的CreateNamedPipe的第二次調用失敗,或者如果不使用此標志,則第二次調用將失敗。 如果第二個CreateNamedPipe調用成功,它將向同一內核對象返回另一個句柄。
在CreateNamedPipe函數的第四個參數中,您可以限制可以創建多少個命名管道實例。 如果像示例中一樣將其設置為PIPE_UNLIMITED_INSTANCE並使用相同的參數兩次調用CreateNamedPipe函數,則將創建兩個實例(它們將共享相同的管道名稱),並且兩個客戶端將能夠連接到您的命名管道服務器(它們中的每一個到一個命名管道實例)。
有關更多信息,請參見http://msdn.microsoft.com/zh-cn/library/aa365594%28v=VS.85%29.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.