GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est l'équivalent de Posix popen() dans l'API Win32 ?

MSDN explique comment faire ce que popen fait à l'aide de l'API Windows dans Pipe Handle Inheritance . Ici, il fournit un exemple bien documenté. C'est beaucoup plus bas niveau que le _popen fonction trouvée dans la bibliothèque d'exécution liée par Jason, mais utilise exclusivement l'API Win32.


Malheureusement, ce n'est pas particulièrement facile.

Vous devez créer un tube à l'aide de la fonction win32 (CreatePipe), puis généralement vous devez dupliquer la fin du tube (DuplicateHandle) que vous donnez au sous-processus pour lui permettre d'être hérité, sinon ce ne sera pas le cas et ne peut donc pas être utilisé.

Ensuite, vous devez créer un processus à l'aide de CreateProcess (qui prend beaucoup de pointeurs de structure, y compris un STARTUPINFO), et passer dans STARTUPINFO le handle que vous avez dupliqué comme son stdout.

Ensuite, vous pouvez lire à partir de l'extrémité de lecture du tube (ReadFile, etc.) jusqu'à ce que vous atteigniez eof, puis vous devez nettoyer en fermant toutes les différentes poignées win32.


Vous pouvez appeler le _popen si vous écrivez une application console. Pour plus d'informations, consultez la documentation sur le site MSDN :http://msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx


Linux
  1. Quel est l'équivalent de la commande updatedb de Linux pour Mac ?

  2. Trouver quel processus se trouve à l'autre bout d'un tuyau

  3. Que signifie le symbole du tuyau linux | fais?

  4. Quel est l'équivalent du cat -n de Bash dans PowerShell ?

  5. Quel est l'avantage de compiler votre propre noyau Linux ?

Quel est l'équivalent de la commande Linux File pour Windows ?

Quel est l'équivalent du ~ (tilde) de Linux dans Windows ?

Quel est l'équivalent d'Active Directory sous Linux

Quel est l'équivalent Linux du démarrage de Windows ?

Quel est l'équivalent FreeBSD de Linux update-rc.d ?

Quel est l'équivalent systemd de ntsysv ?