GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es el equivalente a Posix popen() en la API de Win32?

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


Linux
  1. ¿Cuál es el equivalente de /proc/cpuinfo en FreeBSD v8.1?

  2. ¿Cuál es el equivalente de C++ para AutoResetEvent en Linux?

  3. ¿Cuál es el equivalente de ~ (tilde) de Linux en Windows?

  4. Encuentra qué proceso está en el otro extremo de una tubería

  5. ¿Cuál es el equivalente de Active Directory en Linux?

¿Cuál es el equivalente al comando de archivo de Linux para Windows?

¿Qué significa el símbolo de la tubería de Linux? ¿hacer?

¿Cuál es el equivalente de cat -n de Bash en PowerShell?

¿Cuál es el beneficio de compilar su propio kernel de Linux?

¿Cuál es el equivalente de FreeBSD de Linux update-rc.d?

¿Cuál es el systemd equivalente de ntsysv?