Signal pour l'appel systeme pause en C
Fermé
lillyz
Messages postés
16
Date d'inscription
jeudi 6 janvier 2011
Statut
Membre
Dernière intervention
2 avril 2013
-
Modifié par lillyz le 6/01/2011 à 13:42
lillyz Messages postés 16 Date d'inscription jeudi 6 janvier 2011 Statut Membre Dernière intervention 2 avril 2013 - 28 janv. 2011 à 15:02
lillyz Messages postés 16 Date d'inscription jeudi 6 janvier 2011 Statut Membre Dernière intervention 2 avril 2013 - 28 janv. 2011 à 15:02
5 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
6 janv. 2011 à 14:56
6 janv. 2011 à 14:56
Salut.
Déjà, je trouve que ton message est pas mal, au moins il est clair et complet.
Je ne m'y connais pas trop en signaux, mais il me semble que ta boucle sur le "pause()" est infini non ? c'est pour ça que printf("ici process fils, fin de pause\n"); ne s'affiche pas.
Normalement avec kill tu peux envoyer différents types de signaux dans la console (man kill)
kill(getpid(),SIGUSR1); //envoyer un signal au parent envoi un signal à l'enfant (d'où 291)
il faut sauver la valeur du getpid du parent pour lui envoyer un message.
Déjà, je trouve que ton message est pas mal, au moins il est clair et complet.
Je ne m'y connais pas trop en signaux, mais il me semble que ta boucle sur le "pause()" est infini non ? c'est pour ça que printf("ici process fils, fin de pause\n"); ne s'affiche pas.
Normalement avec kill tu peux envoyer différents types de signaux dans la console (man kill)
kill(getpid(),SIGUSR1); //envoyer un signal au parent envoi un signal à l'enfant (d'où 291)
il faut sauver la valeur du getpid du parent pour lui envoyer un message.
lillyz
Messages postés
16
Date d'inscription
jeudi 6 janvier 2011
Statut
Membre
Dernière intervention
2 avril 2013
7 janv. 2011 à 15:24
7 janv. 2011 à 15:24
Bonjour Char Snipeur et merci pour ta réponse,
en effet après quelques test j'ai trouvé la réponse à ce que je cherchais je publie la solution pour une autre personne
1) Pour envoyer un signal à un process il ya 2 méthodes:
kill(pid_t pid, int sig); //à partir d'un prog en c
kill -sig pid // à partir du terminal linux
2) Les signaux que j'envoyais à mes process leur demandais de quitter et ce la explique prq mon printf("ici process fils, fin de pause\n"); ne s'affiche jamais et que quand jenvoi un signal au père l'execution de mon programme ne se termine pas.
en effet après quelques test j'ai trouvé la réponse à ce que je cherchais je publie la solution pour une autre personne
1) Pour envoyer un signal à un process il ya 2 méthodes:
kill(pid_t pid, int sig); //à partir d'un prog en c
kill -sig pid // à partir du terminal linux
2) Les signaux que j'envoyais à mes process leur demandais de quitter et ce la explique prq mon printf("ici process fils, fin de pause\n"); ne s'affiche jamais et que quand jenvoi un signal au père l'execution de mon programme ne se termine pas.
Et dans ce cas quel signal doit on envoyé pour stoppé une pause ? j'ai essayé sigcont mais sa ne fonctionne pas
Bonjour,
il y a une boucle infinie avant le printf alors il vous faut trouver le moyen de récupérer le signal du clavier dans la boucle et en sortir lors du signal clavier avec un break pour que le printf soit lu
exemple :
il y a une boucle infinie avant le printf alors il vous faut trouver le moyen de récupérer le signal du clavier dans la boucle et en sortir lors du signal clavier avec un break pour que le printf soit lu
exemple :
for(;;) { pause(); if(signal_clavier) { break; } } printf("ici process fils,fin de pause\n");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lillyz
Messages postés
16
Date d'inscription
jeudi 6 janvier 2011
Statut
Membre
Dernière intervention
2 avril 2013
28 janv. 2011 à 15:02
28 janv. 2011 à 15:02
ca ne fonctionnera pas avec SIGCONT parceque ce lui là continue un processus stopé
tu peux envoyé n'importe quel autre signal SIGUSR1, SIGUSR2, SIGTERM. SIGSTOP.....
Ou tu fais tout simplement: kill pid
tu peux envoyé n'importe quel autre signal SIGUSR1, SIGUSR2, SIGTERM. SIGSTOP.....
Ou tu fais tout simplement: kill pid