PHP

Как сделать фоновый процесс, который будет блокировать запуск 1 программы пока не запущена вторая.

Как сделать фоновый процесс, который будет блокировать запуск 1 программы пока не запущена вторая
В настройках есть режим разработчика. Там в самом низу есть ограничение фоновых процессов
NN
Nicki Nickolas
85 251
Лучший ответ
На ПХП это сделать вряд ли возможно.

На любом языке с поддержкой WinAPI - пишешь системный сервис, который делает примерно следующее:
1. Ищет в памяти процесс второй программы. Если процесс не найден, идем на 3.
2. Если первый процесс остановлен, запускает все его потоки, начинает цикл сначала.
3. Ищет первый процесс. Если он найден и не остановлен, останавливает все его потоки, запоминает этот факт. Либо убивает весь первый процесс.
4. Начинает цикл сначала.

Учитывай, что твой сервис должен сам себе установить привилегию SeDebugPrivilege, иначе он не сможет управлять чужими потоками. Также учитывай, что первый процесс может в теории при таком подходе выпасть в осадок, поскольку мы ни хрена не знаем, в каком именно порядке безопасно останавливать его потоки, и в каком - запускать. И в общем случае не узнаем никак и никогда.

Другие возможные подходы (извиняй, лично не исследовал, возможно они нерабочие):
- Ловить запуск процесса через системные счетчики. Такое себе...
- Ловить запуск процесса через крюки, и, по возможности, вообще сразу его отменять. Заманчиво, но ХЗ, сработает ли.

Все счастье здесь жестко завязано на WinAPI и навскидочку требует 7-8 лет соотв. опыта разработки. Удачи.
Для таких задач пишут микросервисы, например на джаве. Там полный букет возможностей
Сергей Канин
Сергей Канин
56 832
на PHP данную задачу решить невозможно впринципе
Denis Lapin
Denis Lapin
85 069

Похожие вопросы