Comment démarrer le programme C sur le serveur pour s’exécuter en arrière-plan

J’ai programmé un programme C et l’ai testé sur mon ordinateur Linux.

Je l’ai téléchargé sur mon serveur maintenant et je veux qu’il fonctionne tout le temps en arrière-plan.

Comment est-il possible de démarrer un programme qui continuera à fonctionner après la fermeture du mastic?

Merci pour toute aide!

vous pouvez laisser le programme en cours d’exécution en ajoutant un & à l’appel

Donc, quand vous avez déjà exécuté votre code comme ceci dans SSH:

./mycode 

vous aimeriez:

 ./mycode & 

Si vous souhaitez exécuter votre programme en arrière-plan, vous devez append le caractère “&” à la commande.

 ./program & 

Mais le processus sera associé au tty actuel. Si vous fermez le tty actuel (dans votre cas, la session SSH), le signal SIGHUP est envoyé à tous les processus associés au tty, ce qui provoque leur fin. Vous pouvez voir le tty associé à un processus avec la commande ps .

La commande disown peut être utilisée pour marquer des travaux afin qu’un signal SIGHUP ne leur soit pas envoyé si le shell parent le reçoit. Avant de fermer le tty actuel, vous pouvez écrire:

 disown %jobID 

Vous pouvez voir le jobID entre crochets lorsque vous exécutez le programme en arrière-plan. Vous pouvez également voir la commande jobID with jobs .

Vous pouvez exécuter la commande directement afin qu’aucun signal SIGHUP ne lui soit envoyé. Pour cela, vous pouvez utiliser la commande nohup .

 nohup ./program & 

Un autre moyen d’éviter de terminer le programme avec le signal SIGHUP consiste à intercepter ce signal dans le programme. Dans un programme C, vous pouvez le faire avec la fonction de signal qui est dans le signal.h

Mais si vous voulez exécuter le programme en tant que démon ou serveur, écrivez mieux un service Systemd ou un script d’initialisation System V.