Ho un programma di origine chiuso che stampa l'output sullo standard output. ho bisogno di analizzare l'output. quindi reindirizzo l'output a un fifo (dal quale posso leggere il processo genitore che forca ed esegue il binario) usando dup2 e poi eseguo il programma. il problema è che le chiamate fprintf nel file vengono bufferizzate perché ora sta scrivendo su un file.forzare un programma per svuotare l'output standard quando viene reindirizzato
ho provato a chiamare setvbuf con _IONBF su stdout prima di chiamare exec. ma il problema esiste ancora.
perché setvbuf non è di aiuto nel mio caso?
come posso forzare l'uscita a essere scaricata?
il fork un processo, chiamare setvbuf nel processo figlio e poi exec uno script shell che exec altro script che finalmente exec binario. posso cambiare il comando exec finale (bash) in modo che disabiliti il buffering in qualche modo. –
Ripeto, è inutile chiamare setvbuf() prima dell'esecuzione - nessuno dello stato della libreria di runtime C è conservato su exec()! Il processo finale che esegui() potrebbe anche non * usare * il CRT! (Improbabile ma possibile.) –
ok sto provando l'approccio pty vedere http://stackoverflow.com/questions/2056858/cannot-write-to-pty-linux –