J'ai un processus codé en C, je souhaiterai associer une action d'arrêt propre de ce processus en tapant la commande ./mon_processus STOP
Si vous avez des idées...
Merci =)
J'ai un processus codé en C, je souhaiterai associer une action d'arrêt propre de ce processus en tapant la commande ./mon_processus STOP
Si vous avez des idées...
Merci =)
STOP ressemble très fort au premier argument
que tu pourrais passer à ton programme en C.
Ne peux tu pas coder dans ton programme un truc du genre :
Code ultra simpliste, c'est l'idée qui compte ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [...] if ( ! strcmp( argv[1] , "STOP" ) ) { /* Ici code d'arrêt de ton programme */ } [...]
Si le processus est deja lancé cela ne risque-t-il pas de le lancer une seconde fois ?
J'ai donc un processus qui tourne en permanence.
Ce processus fonctionne avec une boucle :
while(a==1)
{
mon processus;
}
Je veux que lorsque l'on tape ./nom_processus STOP
cela envoi un signal et change la valeur de a en 0 par exemple afin de mettre fin à la boucle et arreter proprement le processus sans devoir passer par un kill.
Ah oui je comprends mieux, ma réponse n'est donc pas adapté navré.
La fonction signal me parait bien adaptée. Ensuite tu pourra utiliser la commande kill
avec le signal approprié et faire réagir ton processus. C'est standard.
Justement je ne veux pas utiliser kill, je veux arreter mon programme proprement en changeant la variable dans le while afin que la boucle s'arrête...
A précisé que je connais le PID du processus qui est stocké dans un fichier texte, il faut donc envoyer une valeur à la variable du while au processus ayant le pid correspondant.
Je pensai utiliser les fonctions raise et signal pour émettre le signal dans la condition STOP et le réceptionner dans la fonction faisant appel à la boucle while afin de terminer cette boucle mais je ne vois vraiment pas comment m'y prendre...
Avec un kill et le signal adapté tu peux terminer correctement
ton programme, même voir ne pas le terminer mais déclencher
d'autres actions. Je te conseille de rechercher sur le net, tu y trouveras
pléthore d'exemples.
Seul le signal SIGKILL ne peut pas être intercepté.
Commence par lire : man 2 signal, man 7 signal
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager