在java中创建命名管道

Posted

技术标签:

【中文标题】在java中创建命名管道【英文标题】:create named-pipe in java 【发布时间】:2014-03-13 12:04:42 【问题描述】:

我找到了这个Example

但我想反过来,我想用 java 创建一个命名管道,并且 C#(或任何其他)应用程序连接到这个管道。这可能吗?如果是,如何?

谢谢 弗洛里安

【问题讨论】:

如果您阅读代码,您会发现它有点像写入文件(命名为管道子的文件)。您将 java 中的读取交换为写入,反之亦然,就是这样。 是的,但是如果我在 java 中创建一个文件,如何在 .net 中使用 NamedPipeClientStream 访问它? 对每个应用程序使用相同的文件名,并为每个调用打开和关闭文件;您不能使用 NamedPipeClientStream 而是使用 FileStream 类。请记住,如果一个应用程序正在写入,则另一个应用程序无法打开文件,反之亦然 【参考方案1】:

在 java 中创建命名管道是依赖于操作系统的,你需要使用命令 Runtime.getRuntime().exec 来创建它:你不能像在 .net 中那样做;这是一个关于如何在 unix http://code.google.com/p/jdds/source/browse/trunk/JDDS/src/rtjdds/rtps/transport/NamedPipe.java?spec=svn7&r=7 中执行此操作的示例。

您可以通过其他方式在 .net 应用程序中创建管道,然后在您提供的示例中交换代码。

【讨论】:

谢谢!问题是这应该在 unix 和 windows 上运行,等等 unix 我不会有任何 .net 应用程序 你不能使用套接字吗?操作系统更灵活。 上面提到的源代码链接(用于通过 exec() 调用创建 Linux 管道)现已更改:请参阅 github.com/sioutisc/jdds/blob/master/JDDS/src/rtjdds/rtps/…。

以上是关于在java中创建命名管道的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中创建一个临时 FIFO(命名管道)?

Windows 8 命名管道创建

凭据提供程序和命名管道

C# 中的命名管道输入输出

Linux进程间通信

命名管道不会等到在 bash 中完成