dotnet核心创建文件名中没有“ CoreFxPipe_”的命名管道

时间:2019-07-16 16:38:50

标签: c# ipc named-pipes

使用dotnet核心的 NamedPipeClientStream NamedPipeServerStream 类创建命名管道时,关联的“管道”(看起来实际上是一个套接字)添加了“ CoreFxPipe_”自动位于文件名的前面。

有没有一种防止这种行为的方法?我只是希望文件名与我提供给构造函数的名称完全相同。

在dotnet核心documentation中,它描述了以下构造函数:

NamedPipeServerStream(String)
使用指定的管道名称初始化NamedPipeServerStream类的新实例。

但是,由于上述原因,此描述似乎充其量是误导性的。

1 个答案:

答案 0 :(得分:0)

解决方案:

使用绝对路径作为管道名称

详细信息:

NamedPipeClientStream 的源代码中,第93 行显示,通过调用 GetPipePath 将管道名称“标准化”,即 PipeStream 类的方法。查看 PipeStream 的源代码,第35行中实现了 GetPipePath

似乎该方法检查“ IsPathRooted”(大概是;管道名称是绝对路径)。如果是这样,它将为您“完全控制”定义套接字的路径。否则,它将把套接字放在/ tmp /中,并在文件名中添加 CoreFxPipe _ 前缀。

第93行 https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.cs

第35行https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/PipeStream.Unix.cs