2010-07-06 6 views
15

È il loro qualsiasi C popen() equivalente in C++?equivalenti popen in C++

+2

Si noti che 'popen' è * non * una funzione prescritta dallo standard * [C99] (https://en.wikipedia.org/wiki/C99) *. È in POSIX, quindi è disponibile nel codice C++ per i sistemi POSIX. –

risposta

13

È possibile utilizzare "non ancora ufficiale" boost.process se si desidera un approccio orientato agli oggetti per la gestione del sottoprocesso.

Oppure puoi usare lo stesso popen, se non ti dispiace la C-ness di tutto.

7

C++ è un superset di C. popen disponibile anche per codice C++.

+1

Non penso che il popen sia richiesto dallo standard. – Puppy

+2

Quale standard? popen viene dal POSIX.1-2001. Persino Windows ha un livello di compatibilità POSIX. Linux e MacOS lo supportano naturalmente, ovviamente. È una funzione di libreria, non parte dello standard C stesso. – Borealid

+0

popen() è parte di POSIX, quindi qualsiasi sistema operativo simile a UNIX dovrebbe supportarlo. Anche per i sistemi operativi non POSIX, se avete popen() in C, dovreste essere in grado di usarlo in C++, a meno che non ci sia qualcosa di molto sbagliato nel compilatore. – Chris

9

Non c'è C++ equivalente in qualsiasi standard, tuttavia involucri C++ vicino questa funzione (e altre funzioni processo POSIX) si trovano in vari toolkit UI (es QT, glibmm) e nel pstreams library.