Bonjour,
Je dois creer un processus avec fork() et capter les signaux ainsi que les status.
J'ai un petit programme pour essayer de comprendre le fonctionnement, mais ça ne fonctionne pas.
Pouvez-vous me dire comment faire pour obtenir le status du processus ???
Selon la documentation sur ce site, je devrais pouvoir obtenir le status:
http://www.opengroup.org/onlinepubs/...ions/wait.html
IF(WIFSIGNALED(status)).. devrait être exécuté selon moi, mais ce n'est pas le cas. Alors comment faire pour obtenir le status de terminaison du processus?
Faites le test avec une interruption "ctrl_c" qui est supposer lancer le signal SIGINT. Ça ne fonctionne pas. wait retourne -1 et le status est 0.
Merci de me donner vos commentaires
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <fcntl.h> #include <sys/stat.h> int main(){ pid_t child_pid, wpid; int status; child_pid = fork(); if (child_pid == -1) { /* fork() failed */ perror("fork"); exit(EXIT_FAILURE); } if (child_pid == 0) { /* This is the child */ while(1); } else { /* This is the parent */ wpid = wait(&status); if (wpid == -1) { perror("waitpid"); printf("\n ***** La fonction wait() a retourné : %d et le status est: %d ******\n\n",wpid, status); exit(EXIT_FAILURE); } if (WIFEXITED(status)) { printf("child exited, status=%d\n", WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { printf("child killed (signal %d)\n", WTERMSIG(status)); } else if (WIFSTOPPED(status)) { printf("child stopped (signal %d)\n", WSTOPSIG(status)); } } }
Partager