6
votes

Exécutez l'application QT au démarrage en tant que démon Linux

J'ai développé une application QT qui contient un serveur TCP et tel. J'essaie maintenant de faire des packages Ubuntu et de laisser l'application commencer automatiquement au démarrage.

L'application doit être exécutée même si personne n'est connecté, ce qui signifie qu'un démon a commencé via un script dans /etc/init.d /

J'ai essayé simplement d'exécuter l'application sur Démarrer et d'envoyer un signal Kill à l'arrêt dans le script init.d, mais cela signifie que l'application fonctionne au premier plan et bloque le script init.

​​Forking comme dans une autre question semble presque Travaillez, je reçois une «erreur inconnue» après avoir essayé de démarrer un serveur TCP. Néanmoins, il devrait être facile de rédiger un script init qui exécute mon application en arrière-plan au démarrage sur les différentes distributions Linux.

Quelqu'un pourrait-il me dire dans la bonne direction?

Utilisation Ubuntu 9.10 avec QT 4.5


2 commentaires

Présentez-vous une interface graphique ou est-ce une console complètement?


C'est Consoly - seulement et n'a jamais besoin d'une entrée d'utilisateur.


5 Réponses :


1
votes

Votre programme est-il une application d'interface graphique ou fonctionne-t-il sans interface graphique?

Pourquoi ne faites-vous pas l'arrière-plan dans le script init utilisant et?


0 commentaires

1
votes

Vous devez ajouter un lien symbolique dans l'un des répertoires RC? .D sous / etc en fonction du niveau d'exécution par défaut. Ou utilisez le script update-rc.d: vous devez d'abord créer un script dans /etc/init.d qui exécute l'application; Deuxièmement, utilisez le script update-rc.d pour ajouter les fichiers nécessaires au démarrage.

Vous pouvez trouver des informations sur la façon de le faire en lisant la page manuelle UPDATE-RC.D: P>

$man update-rc.d


0 commentaires

2
votes

Le meilleur moyen est probablement d'utiliser QService où le travail de forking est pris en charge pour vous.

Toutefois, si vous souhaitez continuer à construire votre propre, vous devez être en arrière-plan ou l'exécuter via Démarrage-stop-démon qui vient avec OPENRC ou un utilitaire similaire pour votre distribution.

En outre, assurez-vous que vous ne liez que sur la bibliothèque partagée de Qtcore. Bien que la demande puisse être une ligne de commande et ne jamais extraire l'interface graphique, cela ne signifie pas que X n'est pas nécessaire pour que l'application soit exécutée. Par exemple, un ensemble de tests d'unités: xxx

car qtgui est présent, toutes les bibliothèques x sont également introduites, bien que filtrées à partir de la sortie ci-dessus. < / p>


0 commentaires

0
votes

Je pense que le moyen le plus simple est de ne pas avoir de logique de démontie dans votre application elle-même, utilisez plutôt un programme d'assistance pour démarrer l'application en arrière-plan et gérer un PID pour cela.

Par exemple, StartProc .


0 commentaires

0
votes

Vous pouvez consulter les nombreux scripts déjà dans votre /etc/init.d pour l'inspiration. D'après ce que je vois là, la plupart des démons de Linux standard dépendent de startproc pour démarrer et killProc pour arrêter.


1 commentaires

Donner des exemples plus spécifiques ici serait utile. En outre, veuillez utiliser le formatage du code pour rendre vos messages plus lisibles.