En nuestro sistema Linux utilizamos pipes con nombre para la comunicación entre procesos (un productor y un consumidor).¿Cómo abrir una tubería con nombre de Windows desde Java?
Para probar el código del consumidor (Java), me gustaría implementar (en Java) un productor ficticio que escribe en un conducto con nombre que está conectado al consumidor.
Ahora la prueba también debería funcionar en el entorno de desarrollo de Windows. Por lo tanto, me gustaría saber cómo crear un conducto con nombre en Windows desde Java. En Linux puedo usar mkfifo (llamado usando Runtime.exec()
), pero ¿cómo debo hacer esto en Windows?
¿Funciona el código anterior para alguien? Lo probé en Windows 7 x64, Java 1.7.0_45 y resultó 'java.io.FileNotFoundException: \\. \ Pipe \ testpipe (El sistema no puede encontrar el archivo especificado) en java.io.RandomAccessFile.open (Método nativo) en java.io.RandomAccessFile. (RandomAccessFile.java:122) '. ¿Debería crearse de derecha como se menciona [en esta publicación] (http://answers.microsoft.com/en-us/windows/forum/windows8_1-files/windows-81-enterprise-64-bit-running-java-jdk/f67d1302-905e-4511-ba1b-0888b259258a)? –
Obtuve la respuesta a mi pregunta anterior: en Java no es posible crear un conducto con nombre (a menos que uno use [JNA] (https://github.com/java-native-access/jna/blob/master/contrib /platform/test/com/sun/jna/platform/win32/Kernel32NamedPipeTest.java)), solo para abrir uno existente (vea [esta respuesta] (http://stackoverflow.com/a/2247022/267197) y [ esa publicación] (https://cdimascio.wordpress.com/2014/01/11/named-pipes-with-java/)). Muchas gracias a las respuestas a continuación también. –
@dma_k Recibo el mismo error. Parece que no es posible crear una tubería con nombre con Java, pero el código funciona con una tubería existente que se creó en otro proceso (por ejemplo, el proceso .Net en el ejemplo vinculado). – Michael