2010-07-06 4 views
15

Есть ли у них какой-либо C popen() эквивалент в C++?popen-эквивалент в C++

+2

Обратите внимание, что 'popen' - это * не * функция, предписанная стандартом * [C99] (https://en.wikipedia.org/wiki/C99) *. Он находится в POSIX, поэтому он доступен в вашем коде на C++ для POSIX-систем. –

ответ

13

Вы можете использовать «еще не официальный» boost.process, если хотите объектно-ориентированный подход для управления подпроцессом.

Или вы можете использовать только popen, если вы не против C-ness всего этого.

7

C++ - это надмножество C. popen доступно также для кода на C++.

+1

Я не думаю, что Папан требуется Стандартом. – Puppy

+2

Какой стандарт? popen происходит из POSIX.1-2001. Даже Windows имеет уровень совместимости с POSIX. Конечно, Linux и MacOS поддерживают его. Это библиотечная функция, а не часть самого стандарта C. – Borealid

+0

popen() является частью POSIX, поэтому любая UNIX-подобная операционная система должна его поддерживать. Даже для не-POSIX-систем, если у вас есть popen() на C, вы сможете использовать его на C++, если в вашем компиляторе что-то не так. – Chris

9

Там нет C++ эквивалента в любом стандартном, однако C++ обертки вокруг этой функции (и других функций процесса POSIX) могут быть найдены в различных UI Toolkit (например QT, glibmm) и в pstreams library.