2010-09-20 6 views

risposta

49

Una pipe è un flusso di dati, in genere dati letti da un file o da una presa di rete. Un tubo rotto si verifica quando questo tubo viene improvvisamente chiuso dall'altra estremità. Per esempio, questo potrebbe essere se il file è montato su un disco o su una rete remota che è stata disconnessa. Per un socket di rete, potrebbe essere se la rete viene scollegata o se il processo all'altra estremità si arresta in modo anomalo.

In Java, non è disponibile lo BrokenPipeException. Questo tipo di errore verrà rilevato racchiuso in un'eccezione diversa, ad esempio SocketException o IOException.

+0

bella spiegazione, sì, è avvolto in IOException, ma con questo chiaro messaggio come "pipe Broken", Nel registro si otterrà qualcosa di simile: causato da: java.io .IOException: Broken pipe – Forhad

4

Il tubo è fondamentalmente un canale di comunicazione tra due processi. Quindi un processo scrive nella pipe mentre l'altro legge da esso. Un'eccezione di pipe interrotte in genere significa che un processo sta tentando di leggere o scrivere dati da una pipe, dove il processo sull'altra estremità della pipe è morto/è stato ucciso.

0

Penso che stai usando Java.net?

Se la connessione è stata chiusa, è necessario aprire un nuovo socket prima di poter inviare più dati.

o le connessioni è stato respinto

+0

Se avesse chiuso la propria connessione, avrebbe avuto "socket chiuso". Se il suo tentativo di connessione fosse fallito, non avrebbe nemmeno ottenuto un "Socket". In entrambi i casi non avrebbe avuto "tubi rotti". Non ci sono prove nella domanda se sta usando o meno java.net – EJP

Problemi correlati