Служба Systemd типа = время ожидания dbus, если имя шины не принадлежит? - PullRequest
0 голосов
/ 13 сентября 2018

После нескольких дней борьбы я понял, что моя программа, которая ожидает в цикле внутри main (), будет отключена примерно через 15 секунд. Мне удалось заставить его работать, создав задачу с:

owner_id = g_bus_own_name (G_BUS_TYPE_SYSTEM,
                           "test.mybus",
                           G_BUS_NAME_OWNER_FLAGS_REPLACE,
                           on_bus_acquired,
                           on_name_acquired,
                           on_name_lost,
                           NULL,
                           NULL);

loop = g_main_loop_new (NULL, FALSE);

g_main_loop_run (loop);

Мой сервисный файл (bustest.service) выглядит так:

[Unit]
Description=BusTest

[Service]
Type=dbus
ExecStart=/home/user/projects/BusTest
BusName=test.mybus

И служебный файл dbus:

[D-BUS Service]
Name=test.mybus
Exec=/bin/false
User=root
SystemdService=bustest.service

Так нужно ли иметь имя шины, чтобы избежать тайм-аута? И нужно ли создавать отдельную задачу, которая запускает g_main_loop_run (), если мой обычный процесс представляет собой цикл?

...