Как отправить сигнал запущенному процессу gtk - PullRequest
1 голос
/ 29 мая 2020

Я делаю приложение gtk в C, которое после запуска, я хочу иметь возможность каким-то образом связаться с процессом (надеюсь, из python) и сказать ему, чтобы он выполнил функцию. У меня все остальное работает, просто нужен способ выполнить функцию извне процесса.

Текущий основной (на основе учебника gtk):

int
main (int    argc,
      char **argv)
{
  GtkApplication *app;
  int status;
  app = gtk_application_new(NULL, G_APPLICATION_FLAGS_NONE);


  custom_setup();
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);

  status = g_application_run (G_APPLICATION (app), NULL, NULL);
  g_object_unref (app);

  return status;
}

Спасибо.

1 Ответ

0 голосов
/ 30 мая 2020

Ваше приложение должно будет предоставить интерфейс DBus другим приложениям с помощью метода, который они могут вызвать, который выполняет вашу функцию.

Хороший способ сделать это - добавить GAction в ваше приложение, который описан здесь . Затем другие приложения могут вызвать org.gtk.Actions.Activate метод DBus , чтобы активировать GAction и выполнить вашу функцию.

...