Книга: Основы программирования в Linux
popen
popen
Функция popen позволяет программе запустить другую программу как новый процесс и либо передать ей данные, либо получить их из нее. Строка command
— это имя программы для выполнения вместе с любыми параметрами, параметр open_mode
должен быть "r"
или "w"
.
Если open_mode
— "r"
, вывод вызванной программы становится доступен вызывающей программе и может быть считан из возвращаемого функцией popen
файлового потока FILE*
с помощью обычных функций библиотеки stdio, предназначенных для чтения (например, fread
). Но если open_mode
— "w"
, программа может отправить данные вызванной команде с помощью вызова функции fwrite
. Далее вызванная программа сможет читать данные из своего стандартного ввода. Обычно вызванная программа не знает, что она считывает данные из другого процесса; она просто читает свой поток стандартного ввода и воздействует на него.
Вызов функции popen
должен задавать "r"
или "w"
; никакого другого значения стандартной реализацией popen не поддерживается. Это означает, что вы не можете вызвать другую программу и одновременно читать из нее и писать в нее. В случае сбоя popen
возвращает пустой указатель. Если вы хотите создать двунаправленную связь с помощью каналов, стандартное решение — применить два канала: по одному для потока данных каждого направления.
- 5.4.4. Функции popen() и pclose()
- Листинг 5.9. (popen.c) Использование функций popen() и pclose()
- 10.6.3. Функции system() и popen()
- Отправка вывода в popen
- 4.5. Функции popen и pclose
- Как реализован вызов popen
- ГЛАВА 4 Именованные и неименованные каналы
- 14.1.4. Стандартный ввод и вывод
- Листинг 10.6. (grep-dictionary.c) Поиск слова в словаре