PDA

View Full Version : [Linux] redirezione stdin e stdout del processo figlio


71104
27-05-2007, 18:08
che funzioni devo usare su Linux per redirigere su determinati file descriptors miei lo standard input e lo standard output di un processo figlio? se poi fossero funzioni presenti anche nel runtime C del MinGW sarebbe assolutamente perfetto, sennò mi arrangio con #ifdef e STARTUPINFO (sono alle prese col solito codice portabile Linux/Win32); grazie.

AnonimoVeneziano
27-05-2007, 19:00
Usa la funzione "dup2()" . per vedere il funzionamento da linux chiama :

man dup2


Assicurati di avere le Manual Pages installate
oppure guarda http://man.he.net/man2/dup2

Non so però se Mingw32 le possieda o meno

Ciao

71104
27-05-2007, 20:56
mi sono letto la documentazione di dup2. inizialmente ho pensato d'istinto: "su Win32 dup wrappa DuplicateHandle, ma dup2 non si può realizzare". E INVECE C'E'!! :eek:
sono andato a spulciarmi i sorgenti (il VCRT di Microsoft è opensource; ci credereste mai? :D) e ho visto che con un po' di lavoro la dup2 di Windows non fa altro che usare DuplicateHandle :|
ma la DuplicateHandle chiude il "target handle"? voglio assolutamente approfondire questo aspetto :mc:

71104
27-05-2007, 21:07
ehm... :fagiano:
nel MSVCRT i file descriptors non corrispondono agli handle :rolleyes:
la dup2 di Windows crea un nuovo HANDLE e lo mappa sul secondo file descriptor :fagiano:
se il secondo file descriptor era aperto lo chiude con la close, la quale chiude l'HANDLE su cui è mappato.