Bonjour à tous,
Je vous explique mon problème, j'ai un processus A et un processus B.
Le processus A envoie des informations à B via un pipe.
Pour l'utilisateur, seul le processus B est utilisé, c'est pourquoi je voudrai que le processus A se termine lors de l'arret du B.
J'ai donc mis en place l'interception du SIGPIPE dans mon processus A comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 static void sig_handler (int sig) { printf ("\nCaught signal %d, cleaning up and exiting\n", sig); cleanup (); signal (sig, SIG_DFL); kill (getpid (), sig); } int main(void) { struct sigaction action; /* setup callback function for SIGINT & SIGPIPE signals */ action.sa_handler = sig_handler; sigaction(SIGINT, &action, NULL); sigaction(SIGPIPE, &action, NULL); ... }
Le problème c'est que SIGPIPE n'est lancé que si mon processus A tente d'écrire dans le pipe (normal), or dans le cas de mes processus, si on quitte le processus B, c'est que le A n'écrira plus rien.
J'aimerai donc trouver un moyen de quitter proprement le A dès la fin du B, même sans écriture dans le PIPE.
Merci d'avance![]()








Répondre avec citation



Partager