URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6464
[ Назад ]

Исходное сообщение
"popen + pclose"

Отправлено dimonna , 15-Май-07 16:52 
Всем привет!

Вот сталкнулся с такой проблемой:
FILE *f=popen(cmd, "r");

потом в цикле читаю данные из пайпа.
Наступает момент когда мне более не нужен запущенный процесс,
и я закрываю пайп:

pclose(f);
НО, вызов pclose держит процесс до завершения работы вызванной программы
вместо того чтобы ее терминировать. Кильнуть процесс я не могу, потому что их может быть запущенно много.

Как нужно правильно терминировать работу с пайпом и терминировать процесс на другой стороне пайпа в таком случае?

Огромное спасибо!


Содержание

Сообщения в этом обсуждении
"popen + pclose"
Отправлено vic , 15-Май-07 18:46 
>НО, вызов pclose держит процесс до завершения работы вызванной программы
>вместо того чтобы ее терминировать.

А где написано что должен терминировать? Смотрим man (http://www.opennet.me/man.shtml?topic=popen&category=3&russi...):
Функция pclose ожидает завершения ассоциированного процесса и возвращает код выхода так же, как и функция wait4.

Другими словами если есть желание не ждать завершения, то уведомляейте вызываемую программу о необходимости завершится немедленно любыми известными способами. А затем уже pclose().