Czy istnieje łatwy sposób sprawdzenia, czy nazwany potok działa poprawnie? Chcę się upewnić, że dane, które wysyłam z mojej aplikacji, są rzeczywiście wysyłane. Czy istnieje szybki i łatwy sposób uzyskania listy wszystkich nazwanych potoków?
Odpowiedzi:
Możesz je wyświetlić za pomocą Process Explorer z sysinternals. Użyj opcji „Znajdź -> Znajdź uchwyt lub bibliotekę DLL ...” i wprowadź wzorzec „\ Urządzenie \ NamedPipe \”. Pokaże ci, które procesy mają otwarte rury.
pipelist.exe
z SysInternals jest jeszcze prostsze, ale jest to tylko wiersz poleceń.
W konsoli programu Windows Powershell wpisz
[System.IO.Directory]::GetFiles("\\.\\pipe\\")
get-childitem \\.\pipe\
Zwraca listę obiektów. Jeśli chcesz tylko nazwę:
(get-childitem \\.\pipe\).FullName
Zamiast tego spróbuj wykonać następujące czynności:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
pipe
pochodzi?
Użyj pipelist.exe z Sysinternals.
W Chrome natknąłem się na funkcję, która wyświetla listę wszystkich otwartych nazwanych potoków, przechodząc do „file: //.//pipe//”
Ponieważ nie mogę znaleźć żadnego odniesienia do tego i było to dla mnie bardzo pomocne, pomyślałem, że mogę się podzielić.
DO#:
String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");
Po CMD
monicie:
>ver
Microsoft Windows [Version 10.0.18362.476]
>dir \\.\pipe\\
Drugi potok został zinterpretowany przez tę witrynę internetową po przesłaniu ... Na początku potrzebne są dwa ukośniki odwrotne. Dlatego upewnij się, że używasz System.IO.Directory.GetFiles (@ "\\. \ Pipe \").
Zauważ, że widziałem, jak to wywołanie funkcji rzucało „niedozwolone znaki w ścieżce”. wyjątek, gdy jeden z potoków na moim komputerze zawierał nieprawidłowe znaki. PipleList.exe działał jednak dobrze, więc wygląda na to, że jest to błąd w kodzie .net MS.
C:\myLocation\someFile.x
, spowoduje ten błąd.