MSDN spiega come eseguire le operazioni di popen utilizzando l'API di Windows in Pipe Handle Inheritance . Qui fornisce un esempio ben documentato. È molto più di basso livello rispetto allo _popen
funzione trovata nella libreria di runtime collegata da Jason, ma utilizza esclusivamente l'API Win32.
Purtroppo non è particolarmente facile.
Devi creare una pipe usando la funzione win32 (CreatePipe), quindi in genere devi duplicare l'estremità della pipe (DuplicateHandle) che stai dando al sottoprocesso per consentirne l'ereditarietà, altrimenti non lo sarà e quindi non può essere utilizzato.
Quindi devi creare un processo usando CreateProcess (che accetta molti puntatori di struttura, incluso uno STARTUPINFO) e passare a STARTUPINFO l'handle che hai duplicato come suo stdout.
Quindi puoi leggere dall'estremità di lettura della pipe (ReadFile ecc.) fino a raggiungere eof, quindi devi ripulire chiudendo tutti i vari handle di win32.
Puoi chiamare _popen
se stai scrivendo un'applicazione console. Per ulteriori informazioni, consultare la documentazione sul sito MSDN:http://msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx