MSDN explica cómo hacer lo que hace popen usando la API de Windows en Pipe Handle Inheritance. Aquí proporciona un ejemplo bien documentado. Es mucho más bajo que el _popen
función que se encuentra en la biblioteca de tiempo de ejecución vinculada por Jason, pero usa la API de Win32 exclusivamente.
Lamentablemente, no es particularmente fácil.
Debe crear una tubería con la función win32 (CreatePipe), luego, por lo general, debe duplicar el final de la tubería (DuplicateHandle) que le está dando al subproceso para permitir que se herede; de lo contrario, no lo será y por lo tanto, no se puede usar.
Luego, debe crear un proceso utilizando CreateProcess (que toma muchos punteros de estructura, incluido STARTUPINFO) y pasar STARTUPINFO el identificador que ha duplicado como su salida estándar.
Luego, puede leer desde el extremo de lectura de la canalización (ReadFile, etc.) hasta llegar a eof, luego debe limpiar cerrando todos los identificadores de win32.
Puedes llamar al _popen
si está escribiendo una aplicación de consola. Para obtener más información, consulte la documentación en el sitio de MSDN:http://msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx