PavelK
@PavelK

Как использовать системный планировщик заданий в собственной программы?

Приветствую!
Пишу программу, её задача висеть в фоне и по расписанию собирать статистику, да передавать на сервер.
После обдумывания решено было отказаться от написания собственного планировщика и использовать системный.
Но тут возникли проблемы - как запускать действия, которые прописаны в планировщике как параметры программы, если программа висит в фоне? т.е. запускать ещё одну копию не вариант.
Нужно как то передать на обработку параметры уже к запущенной программе.
Как это можно наиболее правильно сделать?

P.S. т.к. программа кросcплатформенная хочется избежать костылей и сделать нативными средствами Qt.
P.P.S. не используя файлы либо сокеты, это по-моему оверкилл.
P.P.S. примерно как в Notepad++ вместо открытия копиии открывается ещё одна вкладка
  • Вопрос задан
  • 644 просмотра
Решения вопроса 4
gbg
@gbg Куратор тега Linux
Любые ответы на любые вопросы
У notepad запускается еще один экземпляр, который пинает (да-да, либо через сокет (что переносимо), либо через оконные сообщения) работающий экземпляр, потом закрывается.

Вам придется делать то же самое.
Ответ написан
Почему не сокеты? Это самое простое, прямое и легковесное решение - QLocalSocket.
Блокнот запускается, видит свой процесс, передаёт ему параметры и умирает.
Ответ написан
xpert13
@xpert13
Full Stack Developer
Первое, что пришло в голову:
1. Планировщик запускает программу с параметрами
2. Та проверяет есть ли уже запущенная копия программы и если есть - передаёт ей параметры любым удобным/кросплатформенным способом и завершает работу. Сами параметры уже обрабатывает запущенная ранее копия программы
Ответ написан
PavelK
@PavelK Автор вопроса
Блин, как всегда решение находится, как только задаёшь вопрос.
Попробую использовать QSharedMemory а потом попробую QDBusMessage
Без запуска копии всё равно не получится =(
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы