Bonjour,

J'ai créé un programme (qui tourne sous Linux) qui crée 2 processus fils, le premier processus est chargé de réaliser un transfert de fichiers par FTP pendant que le deuxième attend pendant n minutes. Si le transfert FTP ne s'est pas terminé avant le délai imparti, mon programme doit tuer ce processus.

Mon problème est que j'ai l'impression que la commande kill(pid,SIGKILL) ne fait rien !

Voici mon code :
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
 
        pid_fils_ftp = fork();  /* creation du premier fils */
        if (pid_fils_ftp==-1)
        {
               /* probleme lors de la creation du fils */
        }
        if (pid_fils_ftp==0)
        {
               /* Transfert FTP */
               exit(0);
        }
        else
        {
            pid_fils_timeout = fork();   /* creation du second fils */
            if (pid_fils_timeout==-1)  
            {
                /* probleme lors de la creation du fils */
            }
            if (pid_fils_timeout==0)    
            {
                sleep(50);        /* attente pendant 50 sec */
                exit(0);
            }
            else
            {
                pid_recup = wait(0);    /* recuperation du pid du premier processus termine */
                if (pid_recup==pid_fils_ftp)
                {
                    /* le transfert FTP s'est termine avant le timeout */
                    kill(pid_fils_timeout, SIGKILL);
                }
                if (pid_recup==pid_fils_timeout)
                {
                    /* le timeout s'est termine avant la fin du transfert FTP */
                    kill(pid_fils_ftp, SIGKILL);
                }
            }
         }
Si vous avez des critiques ou des remarques, n'hésitez pas à m'en faire part. Merci d'avance !

Lornak