Sul nostro sistema Linux utilizziamo pipe denominate per la comunicazione tra processi (un produttore e un consumatore).Come aprire una pipe denominata Windows da Java?
Per testare il codice utente (Java), vorrei implementare (in Java) un produttore fittizio che scrive su una named pipe che è collegata al consumatore.
Ora il test dovrebbe funzionare anche nell'ambiente di sviluppo di Windows. Quindi mi piacerebbe sapere come creare una named pipe in Windows da Java. In Linux posso usare mkfifo (chiamato usando Runtime.exec()
), ma come dovrei farlo su Windows?
Il codice sopra funziona per qualcuno? Ho provato su Windows 7 x64, Java 1.7.0_45 e risultava 'java.io.FileNotFoundException: \\. \ Pipe \ testpipe (Il sistema non riesce a trovare il file specificato) su java.io.RandomAccessFile.open (metodo nativo) su java.io.RandomAccessFile. (RandomAccessFile.java:122) '. Dovrebbe essere creato direttamente come menzionato [in questo post] (http://answers.microsoft.com/en-us/windows/forum/windows8_1-files/windows-81-enterprise-64-bit-running-java-jdk/f67d1302-905e-4511-ba1b-0888b259258a)? –
Ho ottenuto la risposta alla mia domanda sopra: in Java non è possibile creare una named pipe (a meno che non si usi [JNA] (https://github.com/java-native-access/jna/blob/master/contrib /platform/test/com/sun/jna/platform/win32/Kernel32NamedPipeTest.java)), solo per aprirne uno esistente (vedi [questa risposta] (http://stackoverflow.com/a/2247022/267197) e [ quel post] (https://cdimascio.wordpress.com/2014/01/11/named-pipes-with-java/)). Molte grazie anche alle risposte di seguito. –
@dma_k Ottengo lo stesso errore. Sembra che non sia possibile creare una named pipe con Java ma il codice funziona con una pipe esistente che è stata creata in un altro processo (ad esempio il processo .Net nell'esempio collegato). – Michael