MSDN vysvětluje, jak děláte to, co dělá popen pomocí Windows API v Pipe Handle Inheritance. Zde poskytuje dobře zdokumentovaný příklad. Je to mnohem nižší úroveň než _popen
funkce nalezená v runtime knihovně propojené Jasonem, ale používá výhradně Win32 API.
Bohužel to není nijak zvlášť snadné.
Musíte vytvořit roura pomocí funkce win32 (CreatePipe), pak obvykle musíte duplikovat konec roury (DuplicateHandle), který dáváte podprocesu, aby bylo možné jej zdědit, jinak nebude a proto nelze použít.
Poté musíte vytvořit proces pomocí CreateProcess (který vyžaduje mnoho ukazatelů struktury, včetně STARTUPINFO) a předat STARTUPINFO handle, který jste duplikovali, jako jeho stdout.
Poté můžete číst od čtecího konce roury (ReadFile atd.), dokud nedosáhnete eof, pak musíte vyčistit zavřením všech různých ovladačů win32.
Můžete zavolat _popen
pokud píšete konzolovou aplikaci. Další informace naleznete v dokumentaci na webu MSDN:http://msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx