IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Récupérer le pid du Fils à partire du processuse pére


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut Récupérer le pid du Fils à partire du processuse pére
    Bonjour,

    Récupérer le pid du Fils à partir du processus pére

    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
     
    #include<stdio.h>
    #include<unistd.h>
    #include<sys/signal.h>
    #include<stdlib.h>
    #include<sys/time.h>
     
    pid_t pid, fils_pid; // Déclaré le "fils_pid" en Globale pour le trouver à partire du processuse pére
     
    int main(){
     
    pid = fork();
    if (pid == 0)
    { // processus fils
     printf("le Fils : mon pid est %d, le pid de Mon papa est %d\n", getpid(), getppid());
     printf("\t\t fork a retourné au pére la valeur %d\n", pid);
     fils_pid = getpid();
    }
    else
     { // processuse pére
       printf("le pére : mon pid est %d, le pid de Mon papa est %d\n", getpid(), getppid());
       printf("le pére : le pid de mon Fils est %d \n", fils_pid);
     
     }
     
    }
    Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    le Fils : mon pid est 6841, le pid de Mon papa est 6840
                     fork a retourné au pére la valeur 0
    le pére : mon pid est 6840, le pid de Mon papa est 6040
    le pére : le pid de mon Fils est 0
    le pére Affiche : le pid de mon Fils est 0 Alors que le Fils son pid == 6841

    Si il y'a un moyen de le trouvé ?

    Merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    fils_pid n'est jamais initialisé dans le père. La mémoire n'est pas partagée entre les processes (à la différence des threads). Chaque process a sa propre "version" des variables.

    Dans le père, le pid du fils est simplement <pid> (la valeur renvoyée par fork).

  3. #3
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut
    ok
    Merci

    en ajoutant sa dans le processuse pére
    printf("\t\t processuse pére: fork a retourné au pére la valeur %d\n", pid);

    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
    #include<stdio.h>
    #include<unistd.h>
    #include<sys/signal.h>
    #include<stdlib.h>
    #include<sys/time.h>
    
    pid_t pid, fils_pid; // Déclaré le "fils_pid" en Globale pour le trouver à partire du processuse pére
    
    int main(){
    
    pid = fork();
    if (pid == 0)
    { // processus fils
     printf("le Fils : mon pid est %d, le pid de Mon papa est %d\n", getpid(), getppid());
     printf("\t\t fork a retourné au pére la valeur %d\n", pid);
     fils_pid = getpid();
    }
    else
     { // processuse pére
       printf("le pére : mon pid est %d, le pid de Mon papa est %d\n", getpid(), getppid());
       printf("le pére : le pid de mon Fils est %d \n", fils_pid);
       printf("\t\t processuse pére: fork a retourné au pére la valeur %d\n", pid);
     }
    
    }
    le Résulta:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    le Fils : mon pid est 7148, le pid de Mon papa est 7147
                     processus fils fork a retourné au pére la valeur 0
    
    le pére : mon pid est 7147, le pid de Mon papa est 7092
    le pére : le pid de mon Fils est 0
                     processuse pére: fork a retourné au pére la valeur 7148

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 39
    Dernier message: 17/06/2008, 18h08
  2. récupérer le PID du processus que l'on crée
    Par doukem dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 03/08/2007, 10h58
  3. Réponses: 8
    Dernier message: 09/11/2006, 14h01
  4. Attendre la fin des threads fils d'un processus
    Par SteelBox dans le forum Windows
    Réponses: 15
    Dernier message: 24/02/2006, 16h08
  5. [Treeview VBA] Liste des fils à partir d'un noeud donné
    Par NoCoZ dans le forum Général VBA
    Réponses: 3
    Dernier message: 26/04/2005, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo