[Qt] créer un démon

Fermé
hautparleur Messages postés 213 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016 - 8 févr. 2015 à 12:32
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 8 févr. 2015 à 14:54
Bonjour,
je fais un programme qui se connecte à un serveur et qui attend de recevoir un message du serveur pour faire une action (comme afficher une boite de dialogue).
Mais ce programme doit tourner en tâche de fond donc pas de fenêtre. Mais quand je ne met pas le
MaClasse w;
w.show();

dans main.cpp dès que je ferme la boite de dialogue le programme se ferme aussi.

Il faut utiliser une certaine classe ou changer des paramètres dans le projet?
Pour l'instant ma classe est héritée de QWidget.
Et j'ai Qt 4.8.3.
Merci d'avance!

3 réponses

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
8 févr. 2015 à 13:49
Bonjour
En informatique il faut avant tout savoir ce que l'on veut ou souhaite faire et ne pas confondre les choses qui sont évidentes et bien distinctes.

Un démon est un service, un processus qui tourne en arrière-plan et en aucun cas un programme avec une interface graphique. Et pour créer un démon en utilise pas Qt parce que c'est chouette mais les outils système de ton système d'exploitation en plus claire, en ne parle plus d'informatique de manière générale, mais de l'informatique système ( programmation système ) un autre aspect de l'informatique un peu plus poussé avec des concepts bien définis et des standards à respecté et on ne va pas rentrer à l'aveugle dans ce secteur sans maîtriser les bases de la programmation système.

Ton client doit être écrit avec le SDK de Qt mais pas le service arrière-plans car celui-ci dépend du système que tu utilise et comme tu parles de démon ( en l'occurrence la fonction demonize ou demon, service ) sache que celui-ci existe pas en langage C/C++ ni dans certaines bibliothèques standard voire même de ton système d'exploitation donc c'est à toi de le faire ( de A à Z ) et de façon logique et portable.

Pour conclure, maîtrise le langage utilisé pour la conception des outils système ( le langage C car, le C++ est orienté objet donc plus axée pour des logiciels que des programmes système) et les notions élémentaire en programmations système comme les Thread , Sémaphore , Mutex , Signal mais également la norme POSIX et revient nous posté un code source de ce que tu as fait ou du moins là où tu t'en sors pas et là en pourras t'aider, mais en aucun cas sollicité notre aide ( mon aide ) sur un sujet poussé que tu ne connaît pas encore ou ne maîtrise pas encore.
à bientôt
1
hautparleur Messages postés 213 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016 15
8 févr. 2015 à 14:18
Non. Ce que je veux, c'est simplement pouvoir enlever l'interface graphique de mon programme.
J'utilise Qt parce que c'est plus pratique pour communiquer avec le serveur.
0
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
8 févr. 2015 à 14:54
Visiblement tu n'as pas compris.

Que tu supprime l'interface graphique ou non il te faudrait tout de même que ton démon ait une indépendance directe vis-à-vis du contrôle de l'utilisateur en clair, c'est le système d'exploitation qui le gère (le système d'exploitation démarré les services essentiels dont il a besoin ou pour les application annexe / ton bidule pour qu'il fonctionne) ensuite le service en question doit lancer les différent dépendance qu'il a besoin (ici ton serveur machin) toujours en tache de fond sans qu'il ait besoin de ton intervention c'est à ça que sert les services ou démon.
Donc il faut manipuler les processus légers ( les Thread etc..) non pas par toi mais ton service qui dépend lui à sont tour de ton système d'exploitation sans compter qu'il faut gérer également les zombies mais aussi mettre en place de verrou pour ton service ( sécuriser l'accès au service). bref il y'a pas mal de chose à prendre en compte (bref).
à bientôt
0