Bonjour,

J'ai un petit souci de compréhension avec le programme suivant:

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
22
23
 
1 #include <stdio.h>
2 #include <sys/signal.h>
3 #include <sys/types.h>
4 #include <unistd.h>
5
6 void T1 ( ) {
7 printf (”J’a i recu un signal\n ”);
8 }
9
10 int main (int argc, char_argv [ ]) {
11 pidt pid;
12
13 if (pid = fork ( )) {
14 sleep (5);
15.kill (pid, SIGUSR1)
16 }
17 else {
18 signal (SIGUSR1, T1);
19 pause ( );
20 }
21 return 0;
22 }
Ligne 15 j'ai kill (pid, SIGUSR1) qui permet d'envoyer le signal SIGUSR1 au fils afin que ce dernier exécute la fonction T1()
Est-ce que quelqu'un pourrait m'expliquer pourquoi dans kill (pid, SIGUSR1) le signal est envoyé au fils alors que pour moi dans ce cas pid =! o, donc nous sommes dans le père.
Quelle est la valeur de PID suite à "if (pid = fork ( )) {". Je pensais que c'était celle du père?!

Est-ce que quelqu'un pourrait m'expliquer exactement ce qu'il se passe? Merci d'avance pour vos explications.