ZXNet эхоконференция «zxnet.pc»
тема: вот где потенциальное место для багов
от: Aleksandr Majorov
кому: Kirill Frolov
дата: 27 Nov 2001
Привет Kirill!
26 Ноя 01 22:43, Kirill Frolov -> All:
KF> Есть у меня например скрипт. Скрипт вычисляет путём хитрых
KF> манипуляций какой PID ему надо прибить, ну и прибивает. А если,
KF> например, прибиваемый процесс в процессе вычисления его PID сдохнет
После того как PID вычислил запомни его, затем проверь
на наличие и тока тогда убивай ;)
KF> и зародится совсем другой процесс с таким-же PID ?
KF> Всё сглючит, из системного блока дым пойдёт и винты
KF> отформатируются.
KF> Как это обойти?
Скольки битный у тебя PID?
Минимум 16 бит == 65536 процессов.
В системе заведен счетчик "какой следующий PID можно выдать"
И этот счетчик работает только на инкремент.
Так что для того, чтобы получить процесс с таким-же PID
нужно запустить еще 65536 процессов.
(Хотя на самом деле меньше - минус количество уже запущенных ;)
Какова вероятность что у тебя между подсчетом PID и проверкой
его наличия и убивания запустится еще 65536 процессов - считай сам ;))
ЗЫ: то что я выше написал - это примерный ответ, который был дан мне.
КОгда меня заинтересовал именно твой вопрос ;)
Aleksand
|