The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Функция popen, завершение выполнения по тайм-ауту"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Функция popen, завершение выполнения по тайм-ауту"
Сообщение от flyer emailИскать по авторуВ закладки on 21-Июл-03, 14:21  (MSK)
Кто нибудь знает, как можно по тайм-ауту завершить процесс, порожденный функцией popen? Функция alarm прекращает работу главного процесса и всех потомков, а надо убиватьтолько дочерние процессы.
Возможно кто-то знает как узнать pid процесса порожденого функцией popen.

P.S. Желательно найти решение без использования fork

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Функция popen, завершение выполнения по тайм-ауту"
Сообщение от Alexey Искать по авторуВ закладки on 21-Июл-03, 16:04  (MSK)
вызвать pclose

>P.S. Желательно найти решение без использования fork
а ведь это и есть fork c pipe

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Функция popen, завершение выполнения по тайм-ауту"
Сообщение от flyer emailИскать по авторуВ закладки on 21-Июл-03, 16:52  (MSK)
pclose вызывается в любом случае. Проблема в том, что команда запущенная через popen может зависнуть или выполняться слишком долго. Поэтому нужно убивать этот процесс по тайм-ауту.
А насчет fork, я имел в виду, что можно вызвать fork, а затем в дочернем процессе вызвать popen. При таком подходе можно выставить тайм-аут в дочернем процессе используя функцию alarm. Но в этом случае fork фактически вывзывается два раза. Один раз прямо в программе, другой в popen. Хотелось бы ограничиться только одним fork.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Функция popen, завершение выполнения по тайм-ауту"
Сообщение от Alexey Искать по авторуВ закладки on 21-Июл-03, 17:09  (MSK)
Синхронизируй процессы через полученный канал.
Если через тайм-аут дочерний не пришлет какое-нибудь подтверждение, убиваешь его.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Функция popen, завершение выполнения по тайм-ауту"
Сообщение от flyer emailИскать по авторуВ закладки on 21-Июл-03, 17:22  (MSK)
Проблема в том, что я открываю канал на запись а не на чтение. К тому же если даже канал был двухсторонний (на чтение и запись), то я не знаю что мне вернет дочерний процесс, так как в дочернем процессе могут запускаться любые комманды (фактически он может вообще ничего не возращать)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Функция popen, завершение выполнения по тайм-ауту"
Сообщение от Alexey Искать по авторуВ закладки on 21-Июл-03, 17:54  (MSK)
Что-то больше ничего пока в голову не приходит.
А может тебе пользоваться отдельно fork, pipe, invoke?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Функция popen, завершение выполнения по тайм-ауту"
Сообщение от flyer emailИскать по авторуВ закладки on 21-Июл-03, 18:10  (MSK)
Спасибо за совет. Я скачал исходник popen и pclose. Попробую на их основе сделать функции, в которых можно выставить тайм-аут на время выполнения комманды.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Функция popen, завершение выполнения по тайм-ауту"
Сообщение от Мартовский заец emailИскать по авторуВ закладки on 05-Сен-03, 23:17  (MSK)
>Спасибо за совет. Я скачал исходник popen и pclose. Попробую на их
>основе сделать функции, в которых можно выставить тайм-аут на время выполнения
>комманды.


Ну и как? Удачно??? Сообщи, плиз!

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру