2010-07-06 18 views
15

¿Hay alguna C popen() equivalente en C++?popen equivalente en C++

+2

Observe que 'popen' es * no * una función prescrita por el * [C99] (https://en.wikipedia.org/wiki/C99) estándar *. Está en POSIX, por lo que está disponible en su código C++ para sistemas POSIX. –

Respuesta

13

Puede utilizar el "no oficial aún" boost.process si desea un enfoque orientado a objetos para gestionar el subproceso.

O simplemente puede usar popen sí mismo, si no le importa la C-ness de todo.

7

C++ es un superconjunto de C. popen está disponible para el código C++ también.

+1

No creo que el Standard requiera popen. – Puppy

+2

¿Qué estándar? popen proviene de POSIX.1-2001. Incluso Windows tiene una capa de compatibilidad POSIX. Linux y MacOS lo admiten de forma nativa, por supuesto. Es una función de biblioteca, no parte del estándar C en sí. – Borealid

+0

popen() es parte de POSIX, por lo que cualquier sistema operativo similar a UNIX debería ser compatible. Incluso para sistemas operativos que no sean POSIX, si tiene popen() en C, debería poder usarlo en C++, a menos que exista algo muy incorrecto en su compilador. – Chris

9

No hay C equivalente ++ en cualquier estándar, sin embargo C++ envolturas alrededor de esta función (y otra función de proceso POSIX) se pueden encontrar en diversos Toolkit interfaz de usuario (por ejemplo QT, glibmm) y en el pstreams library.