Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

POPEN(3S)

НАЗВАНИЕ
popen, pclose - создание и ликвидация канала между программой и командой

СИНТАКСИС

	#include <stdio.h>
	
	FILE *popen (command, type)
	char *command, *type;
	
	int pclose (stream)
	FILE *stream;

ОПИСАНИЕ
Аргументами функции popen являются указатели на цепочки символов с завершающим нулевым байтом. Первая из них, command, содержит команду shell'а, а вторая задает режим ввода/вывода: "r" для чтения и "w" для записи. Функция popen создает канал между вызывающей программой и указанной командой. Возвращаемое значение - это указатель на поток. Если режим равен "w", то можно писать на стандартный ввод команды, выводя в созданный поток. Если режим равен "r", то можно читать со стандартного вывода команды, вводя из созданного потока.

Поток, открытый с помощью popen, должен быть закрыт с помощью функции pclose, которая ожидает завершения запущенного процесса выполнения команды и выдает код его завершения.

Поскольку открытые файлы разделяются, команда с режимом "r" может быть использована как входной фильтр, а команда с режимом "w" - как выходной фильтр.

ПРИМЕР

  1. Типичным является следующий пример:
    	char *cmd = "ls *.c";
    	FILE *ptr;
    	if ((ptr = popen (cmd, "r")) != NULL)
    	  while (fgets (buf, n, ptr)) != NULL)
    	    (void) printf ("%s", buf);
    

На стандартный вывод будут записаны имена всех файлов с расширением .c, принадлежащих текущему каталогу.

СМ. ТАКЖЕ
pipe(2), wait(2), fclose(3S), fopen(3S), stdio(3S), system(3S).

ДИАГНОСТИКА
Функция popen возвращает пустой указатель (NULL), если файл или процесс не могут быть созданы.

Функция pclose возвращает -1, если поток не ассоциирован с командой посредством popen.

ПРЕДОСТЕРЕЖЕНИЯ
Если требуется, чтобы вызывающий процесс и процесс, порождаемый по popen, одновременно читали или писали в общие файлы, то нельзя при этом пользоваться буферизованным вводом/выводом, так как данные в буферах перемешаются непредсказуемо. Проблемы с выходным фильтром могут быть решены путем аккуратного выталкивания буферов с помощью функции fflush [см. fclose(3S)].

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...