2010-07-06 17 views
15

Ist ihr jede C popen() Äquivalent in C++?popen Äquivalent in C++

+2

Beachten Sie, dass 'popen' ist * nicht * eine Funktion von der * [C99] vorgeschrieben (https://en.wikipedia.org/wiki/C99) Standard *. Es ist in POSIX, daher ist es in Ihrem C++ - Code für POSIX-Systeme verfügbar. –

Antwort

13

können Sie die „noch nicht offizielle“ verwenden boost.process, wenn Sie einen objektorientierten Ansatz wollen die subprocess für die Verwaltung.

Oder Sie können einfach popen selbst verwenden, wenn Sie nicht die C-ness von allem nichts ausmacht.

7

C++ ist ein Ober von C. popen auch auf C++ Code verfügbar ist.

+1

Ich glaube nicht, dass Popen vom Standard verlangt wird. – Puppy

+2

Welcher Standard? popen kommt von POSIX.1-2001. Sogar Windows hat eine POSIX-Kompatibilitätsebene. Linux und MacOS unterstützen es natürlich nativ. Es ist eine Bibliotheksfunktion, die nicht Teil des C-Standards selbst ist. – Borealid

+0

popen() ist Teil von POSIX, also sollte jedes UNIX-ähnliche Betriebssystem es unterstützen. Auch für Nicht-POSIX-Betriebssysteme, wenn Sie popen() in C haben, sollten Sie in der Lage sein, es in C++ zu verwenden, es sei denn, mit Ihrem Compiler ist etwas nicht in Ordnung. – Chris

9

Es gibt keine C++ Äquivalent in jedem Standard jedoch C++ Wrapper um diese Funktion (und andere POSIX Prozessfunktion) können auf verschiedene UI Toolkit (z.B QT, glibmm) und im pstreams library gefunden werden.