PDA

View Full Version : [C] Funzione che cattura output


osa
01-11-2005, 23:56
Esiste in C una funzione che cattura l'output di un comando Linux, come la funzione qx() di PerL?

ilsensine
02-11-2005, 09:04
Puoi usare delle pipe, per connettere stdin/stdout/stderr a descrittori del tuo programma.

osa
02-11-2005, 12:06
Puoi usare delle pipe, per connettere stdin/stdout/stderr a descrittori del tuo programma.

Ok grazie

ilsensine
02-11-2005, 13:33
Attento a non usare la chiamata "system" in questo modo. Un pipe diventa bloccante quando il buffer di trasmissione si riempie (e riempirlo è facile, visto che contiene solo una o due pagine di memoria), è necessario quindi che chi legge lo "svuoti" continuamente. Ciò non avviene con la system, in quanto il chiamante (che dovrebbe leggere il pipe) blocca sulla wait in attesa che il child termini (e il child si ritroverà bloccato se riempie il buffer del pipe).
L'utilizzo corretto è tramite la fork.