MSDN erklärt, wie Sie das tun, was popen tut, indem Sie die Windows-API in Pipe Handle Inheritance verwenden. Hier bietet es ein gut dokumentiertes Beispiel. Es ist viel niedriger als das _popen
Funktion, die in der von Jason verlinkten Laufzeitbibliothek zu finden ist, verwendet jedoch ausschließlich die Win32-API.
Leider ist es nicht besonders einfach.
Sie müssen eine Pipe mit der win32-Funktion (CreatePipe) erstellen, dann müssen Sie normalerweise das Ende der Pipe (DuplicateHandle) duplizieren, das Sie dem Unterprozess übergeben, damit es vererbt werden kann, andernfalls wird es nicht sein und kann daher nicht verwendet werden.
Dann müssen Sie einen Prozess mit CreateProcess erstellen (der viele Strukturzeiger benötigt, einschließlich einer STARTUPINFO) und in STARTUPINFO das Handle übergeben, das Sie als stdout dupliziert haben.
Dann können Sie vom lesenden Ende der Pipe lesen (ReadFile usw.), bis Sie eof erreichen, dann müssen Sie aufräumen, indem Sie alle verschiedenen Win32-Handles schließen.
Sie können _popen
anrufen wenn Sie eine Konsolenanwendung schreiben. Weitere Informationen finden Sie in der Dokumentation auf der MSDN-Website:http://msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx