è possibile monitorare più di un flusso contemporaneamente?

2

es.
- $ stream1 è lo STDOUT di un processo figlio e $ stream2 è lo STDERR dello stesso processo figlio
- $ stream1 è un processo figlio e $ stream2 è un altro processo figlio

Esiste la possibilità in perl di monitorare due o più flussi contemporaneamente?

Quindi eseguiamo il ciclo finché viene visualizzato qualsiasi elemento in uno qualsiasi degli stream e prendiamo ciò che viene prima in $ stream1 o $ stream2.

Qualcosa di simile

while (my $line = <$stream1 or $stream2> ) {  
    #do something with the $line
}

??

    
posta ludwika 27.12.2012 - 16:54
fonte

1 risposta

3

Certo che c'è - è Perl, dopo tutto - non solo con piuttosto una sintassi così elegante.

Il monitoraggio di diversi stream si riduce all'uso giudizioso di select syscall, e in Perl significa utilizzare la versione a quattro argomenti di seleziona , che avvolge questo syscall. Molte persone lo trovano un po 'troppo macchinoso e di basso livello, quindi ovviamente c'è un modulo che avvolge ulteriormente lo schema per comodità dell'utente.

    
risposta data 27.12.2012 - 17:10
fonte

Leggi altre domande sui tag