У меня заблокирован терминальный сервер "киоск".
Этот терминальный сервер имеет скрипт Perl в качестве .Xsession и запускает интерфейс Tk. Когда этот интерфейс Tk готов, скрипт perl запускает «process2» и позволяет пользователю взаимодействовать с «process2» (графическим приложением).
Если пользователь вмешивается в «process2» и вызывает его сбой, пользователь может получить доступ к базовому рабочему столу, поэтому я хотел бы проверить, запущен ли «process2» и не запущен ли «process2» $ display, я хотел бы просто выполнить выход из системы (что приведет к выходу из системы отображения экрана, на котором в настоящий момент выполняется скрипт perl).
Поскольку система одновременно запускает 10 экземпляров «process2» для 10 разных пользователей, я не могу просто проверить, запущен ли «process2» в системе с «ps» или что-то в этом роде. Мне нужно проверить, запущен ли «process2» под этим конкретным дисплеем $ display.
Обратите внимание, что все 10 пользователей входят в систему под одним и тем же именем пользователя во всех сеансах, поэтому я не могу проверить все процессы, запущенные конкретным пользователем, которые также будут возвращать все 10 экземпляров.
Как:
system("process2 &");
while(1) {
sleep(1);
if (is_it_running("process2", $display) == false) {
system("logout &");
}
}
Это функция is_it_running, которая мне нужна, чтобы узнать, как она должна выглядеть.
$ display может содержать необработанный номер дисплея, например: «: 1.0», или может содержать разобранный номер дисплея, например: «1».