Sto creando un bridge veloce tra due programmi separati.È Java FileInputStream Locking File per la scrittura
Un programma scrive su un file, mentre il mio programma legge contemporaneamente da esso.
Sembra che non appena chiamo la prima lettura la scrittura sia completamente bloccata.
Perché si verifica questo e qual è la soluzione?
// Create Named Pipe
Runtime.getRuntime.exec("mkfifo /tmp/mypipe")
val stream = new FileInputStream("/tmp/mypipe")
val in = new BufferedReader(new InputStreamReader(stream))
// File opened for reading. No blocking at this point.
while (true) {
println(in.readLine())
// File read. Now blocking.
}
Aggiornamento:
Questo file è in realtà una named pipe creata con mkfifo /tmp/mypipe
. Ho provato a utilizzare questo con un normale File
e ha funzionato bene - tutti i dati visualizzati.
Sto usando una named pipe perché non voglio l'overhead del disco IO.
Puoi mostrare anche l'altro programma? – Vlad
@Vlad non ho fonte e non è pubblico. Tutto ciò che fa è scrivere non leggere. Il ciclo while e la mancanza di una chiusura corretta sono semplici standard. – BAR