Как выполняется периодическое задание в приложении gtk?

#c #linux #gtk

#c #linux #gtk

Вопрос:

Мне нужно создать приложение с графическим интерфейсом, построенное на gtk, которое проверяет socekets на наличие входящих сообщений и отображает статистику по мере их сбора без какого-либо вменения от пользователя. Как это можно организовать?

Ответ №1:

Я бы знал, как это сделать, используя PyGTK и PyGObject, но я никогда не делал ничего подобного в C. Тем не менее, у меня есть предложение для вас: попробуйте g_io_add_watch функцию из GLib (которая также является базовой для GObject). Для меня это хорошо работало на Python (и, кстати, было гораздо практичнее в использовании), а версия Python — это просто оболочка для исходной функции C. Поскольку GTK основан на GObject, а GObject широко использует GLib, у вас уже есть эта функция, доступная в вашей среде разработки, и она должна хорошо работать с GTK .

Комментарии:

1. если возможно, я хотел бы использовать вызов по времени, например, каждые 0,2 секунды, вместо прослушивания каждого канала по мере его активации (в моей задаче их 8). Есть ли способы сделать это?

2. Конечно, вы можете! На самом деле, это было бы проще сделать с помощью g_timeout_add функции . Однако я подозреваю , что это было бы, по крайней мере, немного менее эффективно.