【发布时间】:2010-09-20 11:56:23
【问题描述】:
有没有一种简单的方法来测试您的命名管道是否正常工作?我想确保我从我的应用程序发送的数据实际上正在发送。有没有一种快速简便的方法来获取所有命名管道的列表?
【问题讨论】:
有没有一种简单的方法来测试您的命名管道是否正常工作?我想确保我从我的应用程序发送的数据实际上正在发送。有没有一种快速简便的方法来获取所有命名管道的列表?
【问题讨论】:
您可以使用来自 sysinternals 的Process Explorer 查看这些内容。使用“Find -> Find Handle or DLL...”选项并输入模式“\Device\NamedPipe\”。它将显示哪些进程打开了哪些管道。
【讨论】:
pipelist.exe 更简单,但它只是命令行。
使用来自 Sysinternals 的 pipelist.exe。
【讨论】:
C#:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
【讨论】:
请尝试以下方法:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
【讨论】:
pipe 来自哪里?
第二个管道在提交时被此网站解释...您需要在开头使用两个反斜杠。所以请务必使用System.IO.Directory.GetFiles(@"\\.\pipe\")。
请注意,我已经看到此函数调用抛出“路径中的非法字符”。当我机器上的一个管道包含无效字符时出现异常。 PipleList.exe 工作正常,所以它似乎是 MS 的 .NET 代码中的一个错误。
【讨论】:
C:\myLocation\someFile.x 的管道的程序都会导致此错误。
在 Windows Powershell 控制台中,键入
[System.IO.Directory]::GetFiles("\\.\\pipe\\")
get-childitem \\.\pipe\
这会返回一个对象列表。如果您只想要名称:
(get-childitem \\.\pipe\).FullName
(第二个示例 \\.\pipe\ 在 Powershell 7 中不起作用,但第一个示例可以)
【讨论】:
我偶然发现了 Chrome 中的一项功能,该功能将通过导航到“file://.//pipe//”列出所有打开的命名管道
由于我似乎找不到任何参考,而且它对我很有帮助,我想我可以分享一下。
【讨论】:
CMD 提示:
>ver
Microsoft Windows [Version 10.0.18362.476]
>dir \\.\pipe\\
【讨论】: