Всем привет, на локальной машине стоит apache2, работающий из под имени нужного пользователя, и через него выполняются разные манипуляции над некоторыми файлами на этой же локальной машине. Эти задачи ограничиваются копированием директории и запуском исполняемого файла из этой директории. Делается это командой Код (PHP): exec('Путь/до/исполняемого/файла'); Все как нельзя хорошо, запускаеся исполняемый файл и собственно выполнение команды завершается по ручному закрытию этого файла(там открывается гуи приложение) Но вот задача, надо перед открытием этого исполняемого файла запустить еще один процесс, который не гуи а запускается в фоне. Как сделать так, чтобы 1. Не нужно было ждать окончания этого процесса, чтобы запустить гуи приложение 2. Первый процесс выгружался по закрытию гуи приложения. Всем спасибо, извините, если вопрос из ряда вон)
я жирным акцентирую на стандартный метод отправки процессов в фон - амперсанд Код (Text): /bin/command & я бы предложил некоторую обертку вокруг этих процессов. сам апач запускает обертку с амперсандом, то есть не блокирует себя ожиданием завершения работы обертки. а обертка запускает в свою очередь в свой фон первое приложение, открывает гуи (и ждет его закрытия) после чего отправляет сигнал завершения первому приложению и благополучно умирает.
Спасибо, про амперсанд это моя оплошность, что не отразил эту мысль изначально в посте. А вот про обертку можно хотя бы намек на пример, если не сложно? Я просто совершенно профан в пхп. Спасибо заранее
а причем тут пхп? это обычный баш, саш или какой там шел принят в вашем дистрибутиве. апач (да, модпхп это модуль апача а не отдельный процесс) должен выполнить эту обертку через exec() и всё. ваше "путь до исполняемого файла" надо заменить на путь к обёртке. а её содержимое видимо выглядит примерно так: Код (Text): #!/usr/bin/env bash /path/to/first/command-running-in-background & /path/to/second/command-long-running-gui kill /path/to/first/command-running-in-background первая строка шэбэнг до интерпретатора который исполнит весь код. нашем случае - баш. вторая запустит первый процесс и не будет ждать его окончания. третья запустит гуи и будет ждать окончания. четвертая убьет первый процесс по имени образа. всё. не забыть chmod +x и можно тестировать. сразу замечу что многопоточности не поддерживает - если будет запущено два гуи то тот который первым завершится убьет второму ту самую программу которую обязательно запускать в фоне.