Auf unserem Linux-System verwenden wir Named Pipes für die Interprozesskommunikation (ein Producer und ein Consumer).Wie öffne ich eine Windows Named Pipe von Java?
Um den Consumer (Java) -Code zu testen, möchte ich (in Java) einen Dummy-Producer implementieren, der in eine Named Pipe schreibt, die mit dem Consumer verbunden ist.
Jetzt sollte der Test auch in der Windows-Entwicklungsumgebung funktionieren. Daher würde ich gerne wissen, wie man eine benannte Pipe in Windows von Java erstellt. Unter Linux kann ich mkfifo (mit Runtime.exec()
) verwenden, aber wie soll ich das unter Windows machen?
Funktioniert der obige Code für jemanden? Ich habe es auf Windows 7 x64 versucht, Java 1.7.0_45 und es resultierte 'java.io.FileNotFoundException: \\. \ Pipe \ testpipe (Das System kann die angegebene Datei nicht finden) bei java.io.RandomAccessFile.open (Native Method) bei java.io.RandomAccessFile. (RandomAccessFile.java:122) '. Sollte es im Voraus erstellt werden (http://answers.microsoft.com/en-us/windows/forum/windows8_1-files/windows-81-enterprise-64-bit-running-java-jdk)/f67d1302-905e-4511-ba1b-0888b259258a)? –
Ich habe die Antwort auf meine Frage oben: In Java ist es nicht möglich, eine Named Pipe zu erstellen (es sei denn, man benutzt [JNA] (https://github.com/java-native-access/jna/blob/master/contrib /platform/test/com/sun/jna/platform/win32/Kernel32NamedPipeTest.java)), nur um eine bestehende zu öffnen (siehe [diese Antwort] (http://stackoverflow.com/a/2247022/267197) und [ dieser Beitrag] (https://cdimascio.wordpress.com/2014/01/11/named-pipes-with-java/)). Vielen Dank auch an die Antworten. –
@dma_k Ich bekomme den gleichen Fehler. Es scheint, dass es nicht möglich ist, eine benannte Pipe mit Java zu erstellen, aber der Code funktioniert mit einer vorhandenen Pipe, die in einem anderen Prozess erstellt wurde (z. B. der .Net-Prozess im verknüpften Beispiel). – Michael