Oki
Продвинутый
- Сообщения
- 452
- Репутация
- 63
Множество возможных идентификаторов (PID), назначаемыех Windows процессам, довольно невелико, так что возможны, независимо от алгоритма, по которому PID выделяются, повторные использования для новых процессов освободившихся PID от завершённых. В связи с этим возникает вопрос, как предотвратить такое переиспользование в периоды времени, в которые скрипт всё ещё обрабатывает некоторый устаревший PID. Например, вот такой скрипт случайно может завершить не тот процесс, который имелся в виду.
Не использовать PID именно для этой узкой задачи не предлагайте, этот скрипт приведён только для демонстрации проблемы в общем.
Была у меня мысль отказаться от блокировки для целей обработки, вместо чего проверять по времени начала процесса, но это не даёт абсолютного решения проблемы, а лишь позволяет уменьшить вероятность возникновения ошибочной обработки не того процесса, всё ещё не обнуляя эту вероятность.
Код:
$aProcessList = ProcessList("AutoIt3.exe")
For $i = 1 To $aProcessList[0][0]
ProcessClose($aProcessList[$i][1])
Next
Сообщение автоматически объединено:
Была у меня мысль отказаться от блокировки для целей обработки, вместо чего проверять по времени начала процесса, но это не даёт абсолютного решения проблемы, а лишь позволяет уменьшить вероятность возникновения ошибочной обработки не того процесса, всё ещё не обнуляя эту вероятность.
Последнее редактирование: