GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è l'equivalente di Posix popen() nell'API Win32?

MSDN spiega come eseguire le operazioni di popen utilizzando l'API di Windows in Pipe Handle Inheritance . Qui fornisce un esempio ben documentato. È molto più di basso livello rispetto allo _popen funzione trovata nella libreria di runtime collegata da Jason, ma utilizza esclusivamente l'API Win32.


Purtroppo non è particolarmente facile.

Devi creare una pipe usando la funzione win32 (CreatePipe), quindi in genere devi duplicare l'estremità della pipe (DuplicateHandle) che stai dando al sottoprocesso per consentirne l'ereditarietà, altrimenti non lo sarà e quindi non può essere utilizzato.

Quindi devi creare un processo usando CreateProcess (che accetta molti puntatori di struttura, incluso uno STARTUPINFO) e passare a STARTUPINFO l'handle che hai duplicato come suo stdout.

Quindi puoi leggere dall'estremità di lettura della pipe (ReadFile ecc.) fino a raggiungere eof, quindi devi ripulire chiudendo tutti i vari handle di win32.


Puoi chiamare _popen se stai scrivendo un'applicazione console. Per ulteriori informazioni, consultare la documentazione sul sito MSDN:http://msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx


Linux
  1. Qual è l'equivalente Linux della pausa DOS?

  2. Qual è il significato di POSIX?

  3. Qual è l'equivalente di getch() e getche() in Linux?

  4. Qual è l'equivalente C++ per AutoResetEvent in Linux?

  5. Quale sarebbe l'equivalente dell'API Win32 in Linux?

Qual è l'equivalente di ~ (tilde) di Linux in Windows?

Cosa significa il simbolo della pipe Linux | fare?

Qual è l'equivalente di cat -n di Bash in PowerShell?

Qual è l'equivalente di Active Directory su Linux

Qual è il vantaggio di compilare il proprio kernel Linux?

Qual è l'equivalente systemd di ntsysv?