Окружающая среда
RHEL 5.7, 64-битный
уровень запуска 5
моно 2.6.7
У меня есть консольное приложение C #, которое запускается как служба при запуске. Из кода этого приложения он запускает два процесса, которые также являются приложениями на C #. Один - это другое консольное приложение, а другой - приложение GTK (но он не отображает свое окно графического интерфейса).
Запуск этого основного приложения в обычном режиме (mono app.exe) работает нормально. Однако при запуске его в качестве службы приложение GTK аварийно завершает работу в Application.Init () с сообщением об ошибке «Дисплей GTK-не открывается».
Это сообщение об ошибке также появляется, когда мы пытаемся непосредственно запустить приложение GTK (он же «mono appname.exe») на уровне выполнения 3 (при условии, что Application.Init () что-то делает с оконным менеджером, которого нет) , Так запускается ли служба linux каким-либо образом на уровне выполнения 3, даже если мы запускаем компьютер на уровне выполнения 5? И если да, то есть ли способ заставить его работать на уровне запуска 5?
Спасибо.
РЕДАКТИРОВАТЬ - дополнительная информация:
Приложение GTK настроено так, что оно может работать с или без запуска своего графического интерфейса через параметр командной строки. Однако мы используем Gtk.Application.Run () для запуска приложения из основного независимо от того, как оно работает. Gtk.Application.Init () должен быть вызван до Gtk.Application.Run (), и он пытается что-то сделать с сервером x - что, очевидно, вызывает проблему на уровне выполнения 3. Однако наша машина всегда будет запускаться на уровне выполнения 5 .
Основное приложение, которое запускает два других, настроено как служба, потому что вся система, в которой оно работает, требует, чтобы оно запускалось как служба во время загрузки. Итак, есть ли способ запустить его в интерактивном режиме? (хотя они на самом деле не будут взаимодействовать с ним напрямую)