28

Linux システムでは、プロセス間通信 (プロデューサーとコンシューマー) に名前付きパイプを使用します。

コンシューマー (Java) コードをテストするために、コンシューマーに接続された名前付きパイプに書き込むダミー​​のプロデューサーを (Java で) 実装したいと思います。

これで、テストは Windows 開発環境でも機能するはずです。したがって、Java から Windows で名前付きパイプを作成する方法を知りたいと思います。Linux では mkfifo ( using と呼ばれますRuntime.exec()) を使用できますが、Windows ではどのようにすればよいですか?

4

5 に答える 5

28

名前付きパイプを使用して Java と .Net プロセス間で通信する

リンクの関連部分

try {
  // Connect to the pipe
  RandomAccessFile pipe = new RandomAccessFile("\\\\.\\pipe\\testpipe", "rw");
  String echoText = "Hello word\n";
  // write to pipe
  pipe.write ( echoText.getBytes() );
  // read response
  String echoResponse = pipe.readLine();
  System.out.println("Response: " + echoResponse );
  pipe.close();
} catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
于 2010-04-09T08:04:07.513 に答える
10

Windowsには名前付きパイプが存在しますが、書き込み可能なファイルシステムでファイルとして作成することはできず、コマンドラインツールもありません。これらは特別なファイルシステムに存在し、Win32APIを使用してのみ作成できます。

ネイティブコードに頼るか、IPCのパイプからソケットに切り替える必要があるようです。これは、はるかに移植性が高いため、おそらく最良の長期的なソリューションです。

于 2009-03-11T13:55:34.617 に答える
2

It is very much possible to read and write to an existing named pipe in Java. You cannot, to my knowledge, create a named pipe in a Windows environment. Linux is a different story as named pipes can be created and consumed like files.

Relevant link on interacting with an existing pipe: http://v01ver-howto.blogspot.com/2010/04/howto-use-named-pipes-to-communicate.html

于 2013-03-20T12:13:14.283 に答える
0

すべてのプロセスが cygwin である場合は、cygwin の名前付きパイプを使用できるかもしれません。

于 2011-06-16T16:16:11.387 に答える