PHP
Как сделать фоновый процесс, который будет блокировать запуск 1 программы пока не запущена вторая.
Как сделать фоновый процесс, который будет блокировать запуск 1 программы пока не запущена вторая
В настройках есть режим разработчика. Там в самом низу есть ограничение фоновых процессов
На ПХП это сделать вряд ли возможно.
На любом языке с поддержкой WinAPI - пишешь системный сервис, который делает примерно следующее:
1. Ищет в памяти процесс второй программы. Если процесс не найден, идем на 3.
2. Если первый процесс остановлен, запускает все его потоки, начинает цикл сначала.
3. Ищет первый процесс. Если он найден и не остановлен, останавливает все его потоки, запоминает этот факт. Либо убивает весь первый процесс.
4. Начинает цикл сначала.
Учитывай, что твой сервис должен сам себе установить привилегию SeDebugPrivilege, иначе он не сможет управлять чужими потоками. Также учитывай, что первый процесс может в теории при таком подходе выпасть в осадок, поскольку мы ни хрена не знаем, в каком именно порядке безопасно останавливать его потоки, и в каком - запускать. И в общем случае не узнаем никак и никогда.
Другие возможные подходы (извиняй, лично не исследовал, возможно они нерабочие):
- Ловить запуск процесса через системные счетчики. Такое себе...
- Ловить запуск процесса через крюки, и, по возможности, вообще сразу его отменять. Заманчиво, но ХЗ, сработает ли.
Все счастье здесь жестко завязано на WinAPI и навскидочку требует 7-8 лет соотв. опыта разработки. Удачи.
На любом языке с поддержкой WinAPI - пишешь системный сервис, который делает примерно следующее:
1. Ищет в памяти процесс второй программы. Если процесс не найден, идем на 3.
2. Если первый процесс остановлен, запускает все его потоки, начинает цикл сначала.
3. Ищет первый процесс. Если он найден и не остановлен, останавливает все его потоки, запоминает этот факт. Либо убивает весь первый процесс.
4. Начинает цикл сначала.
Учитывай, что твой сервис должен сам себе установить привилегию SeDebugPrivilege, иначе он не сможет управлять чужими потоками. Также учитывай, что первый процесс может в теории при таком подходе выпасть в осадок, поскольку мы ни хрена не знаем, в каком именно порядке безопасно останавливать его потоки, и в каком - запускать. И в общем случае не узнаем никак и никогда.
Другие возможные подходы (извиняй, лично не исследовал, возможно они нерабочие):
- Ловить запуск процесса через системные счетчики. Такое себе...
- Ловить запуск процесса через крюки, и, по возможности, вообще сразу его отменять. Заманчиво, но ХЗ, сработает ли.
Все счастье здесь жестко завязано на WinAPI и навскидочку требует 7-8 лет соотв. опыта разработки. Удачи.
Для таких задач пишут микросервисы, например на джаве. Там полный букет возможностей
на PHP данную задачу решить невозможно впринципе
Похожие вопросы
- Как вставить в "label" имя ПК которого запустил клиент на PHP. Пример: Hello! "Имя компьютера" на ПК запустившего челове
- Назовите команды, которые используются для передачи данных с программы на сервере на php в программу в браузере на js.
- Как защитить программу php от кражи
- Реально ли написать сайт (портал) в блокноте? или без специальных программ не обойтись?
- мне нужна программа которая сама открывает сайт и проверит наличие нужной мне информации на конкретной странице сайта.
- Чтобы запустить сайт на PHP, необходим сервер с ОС типа Windows Server, правильно?
- Стоит ли рассматривать CMS 1С-Битрикс для разработке сайта с привязкой к 1С, бизнес-процессам и т. д.? Описание ниже!
- Что нужно сделать ещё?
- Почему заказчики на фриланс-биржах не говорят в описании задания что именно нужно сделать. Всё время пишут что-то...
- В какой программе удобно создавать PHP сайты безовсяких денверов?