Всем привет!Вот сталкнулся с такой проблемой:
FILE *f=popen(cmd, "r");потом в цикле читаю данные из пайпа.
Наступает момент когда мне более не нужен запущенный процесс,
и я закрываю пайп:pclose(f);
НО, вызов pclose держит процесс до завершения работы вызванной программы
вместо того чтобы ее терминировать. Кильнуть процесс я не могу, потому что их может быть запущенно много.Как нужно правильно терминировать работу с пайпом и терминировать процесс на другой стороне пайпа в таком случае?
Огромное спасибо!
>НО, вызов pclose держит процесс до завершения работы вызванной программы
>вместо того чтобы ее терминировать.А где написано что должен терминировать? Смотрим man (http://www.opennet.me/man.shtml?topic=popen&category=3&russi...):
Функция pclose ожидает завершения ассоциированного процесса и возвращает код выхода так же, как и функция wait4.Другими словами если есть желание не ждать завершения, то уведомляейте вызываемую программу о необходимости завершится немедленно любыми известными способами. А затем уже pclose().