[英]How to create named pipe (mkfifo) with .net6 in linux?
我想在 Linux 中使用 .net6 創建一個名為 pipe(“mkfifo”)。
使用 class NamedPipeServerStream對我沒有幫助,因為它創建了一個套接字文件而不是 pipe。
這將創建一個套接字:
var notAPipeButsocket = new NamedPipeServerStream("/tmp/my.notpipe", PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
notAPipeButsocket.WaitForConnection();
微軟似乎選擇在 linux 中使用 sockets 顯式實施“NamedPipeServerStream”:為什么不使用 Unix 域 Z0E188AE3EE5A248407D 命名管道?
如何在 Linux 中使用 .net6 創建一個真實命名的 pipe 文件並寫入其中?
上下文:我想用 WireShark 打開 pipe。
到目前為止,我發現如何從 .net6 創建名為 pipe (mkfifo) 的唯一方法是使用 Mono:
https://github.com/dotnet/runtime/issues/24390#issuecomment-384650120
您可以使用 .NET Core 上的 Mono.Posix.NetStandard 庫來訪問 mkfifo POSIX 命令。 這將允許您的程序讀取/寫入名為 pipe 的 FIFO/Unix。
要寫入命名的 pipe,您可以像這樣簡單地使用 FileStream:
using FileStream fs = File.OpenWrite(namedPipePath);
fs.WriteByte(134);
請注意,此調用將阻塞,直到其他人開始讀取它(另一個進程或任何人)。
在我的情況下,無需在 .net6 中創建它就足以寫入 pipe ,因為我可以通過mkfifo
創建它終端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.