убить процесс из этого же процесса по таймауту
От: Аноним  
Дата: 16.04.11 07:31
Оценка:
Привет!
есть сложный, многоцикличный, хорошо жрущий память код, написанный на С++ под linux.
будучи раз запущенным — он может работать до суток а то и двое.
Терпеть такое не хочется — нужно как то оградить его время работы.
Вставлять во все циклы (а их много!) проверку на таймер — да еще и как то определять
способы корректного выхода из них, а потом еще и из функций, в которых они написаны...
брррр... страх как не хочется.

Хочется просто как то время пришло — сказать самому себе (ну в рамках запущенного процесса)
а сдохни-ка ты гад))). Типа kill -9 this->PID.

форкаться, чтоб в этом втором процессе следить за временем и слать kill, не хочется, ибо
по определению fork(), порожденный таким образом процесс имеет всю память,
стек и т.п. вещи, подобные/равные исходному — а т.к. исходный процесс многожрущий память
и т.п. то получается что я ради какого-то там мнимого убийства одного страшного процесса,
буду "рождать" еще такого же монстра, что и существующий процесс, но при этом пользу
выполняющего наиминимальнейшую если не сказать еще меньше...

что предложат в таком случае уважаемые форумчане?

Еше уточнение — решение можно принять — тока в коде С++. Т.е. никаких там bash/shell
скриптов, юниксовых хитростей. Процесс должен как то умереть из самого себя.
Код этого должен быть с++/boost/stl(тут рассматриваются варианты))))) и при этом не создавать
никакой "тяжелой" копии моего "страшного" процесса...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.