Named pipe 在 windows 上,是個很常用的 IPC (Interprocess Communication)。
如果下載 pipelist (註1),執行後會列出電腦上已有的 named pipe 的名字。
我執行後嚇一跳,還真是多。
利用 c# 也可以寫程式把這些名字列出來。
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
可惜的是,如果電腦上有開啟 vmware,就會有 named pipe 的名字有帶磁碟機符號。
那麼,就會出現以下的錯誤:
System.ArgumentException: 第二個路徑片段不可以是磁碟機或 UNC 名稱。
參數名稱: path2
於 System.IO.Path.InternalCombine(String path1, String path2)
於 System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
於 System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption)
於 System.IO.Directory.GetFiles(String path)
這問題,我目前還沒有辦法解決。
所以,pipelist 湊合著用吧。
註1:http://technet.microsoft.com/en-us/sysinternals/dd581625.aspx
參考:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx
http://stackoverflow.com/questions/258701/how-can-i-get-a-list-of-all-open-named-pipes-in-windows
沒有留言:
張貼留言