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

POSIX C Discussion :

[debutant] recuperer des pid de fils


Sujet :

POSIX C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut [debutant] recuperer des pid de fils
    bonjour,

    bon je vous expose mon soucis en deux temps trois mouvements:

    Avec un fork, j'ai creer plusieurs fils mais je souhaiterais recuperer la valeur de leurs pid pour les mettre dans un tableau pour pouvoir les utiliser plus tard. Mais je ne vois pas comment faire, pourtant j'ai essayer plusieurs fonction comme le chdir() mais je ne comprend pas grand chose.

    un ptit conseil serait le bien venu, amis expérimentés.

    merci d'avance

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
     
    int i,j,pere,status;
     
    int tab[4];
     
    main(){
     
    	for (i = 0; i <= 3; i++)
       		if (fork() == 0) {
     
            		printf ("le fils %d est de pid %d\n", i, getpid());
            		exit (1);
     
     
     
        		}		
     
    	pere = wait(&status);
    	printf ("le père est de pid %d\n", getppid());
    	printf ("status = %d\n", status);
     
    return 0;
     
    }

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par charlix
    pourtant j'ai essayer plusieurs fonction comme le chdir() mais je ne comprend pas grand chose.

    C'est normal, chdir sert à changer le repértoire courant d'un processus...

    Ne pas passer par un tube il faut, mais pour trouver la réponse, lire les posts suivants il te faudra.

  3. #3
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    merci

    je vais essayer avec un pipe et si j'ai des soucis je posterais

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Quelqu'un a besoin de relire la doc de fork()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Est ce qu'il y aurait une doc en français sur une documentation inter-processus, pour que le pere demande o fils son pid par un tube. Ma doc est en anglais et j'ai un peu du mal.

    Merci

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    OK, traduction de mon post précédent:
    fork() peut retourner trois types de résultat:
    • -1 : Erreur, le programme n'a pas forké
    • 0 : OK, programme fils.
    • Autre : OK programme père. "Bizarrement", cette valeur retournée EST LE PID DU FILS. Le monde est bien fait, non ? Quand on pense qu'il suffirait de lire la doc de fork() pour le savoir...

    À croire que certains ici programment selon le principe "if all else fails, read the manual" (quand tout le reste a échoué, lire le manuel)... Ou pire, sans lire le manuel du tout...

    Edit: Post croisé avec millie...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Médinoc
    Quelqu'un a besoin de relire la doc de fork()...

    que je suis.

    Effectivement, fork retourne simplement dans le parent le PID du fiston.

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
     
     
     
     
    int main(void){
       pid_t f;
       int status;
     
       f = fork();
      if(f==-1)
      {
        perror("fork");
        exit(EXIT_FAILURE);
      } 
     
       if (f ==0)
      {
            printf ("le fils est de pid %d\n", getpid());
            _exit (EXIT_SUCCESS);
      }	
     
      printf("pere sait que le fiston est de PID %d", f);
     
      wait(&status);
     
      printf ("le père est de pid %d\n", getppid());
     
      return EXIT_SUCCESS;
     
    }

  8. #8
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Si mon anglais est aussi bon que je le pense, lorsqu'un fork est lancer un tube est ouvert directment entre le pere et le fils donc il y a possibilité de savoir dirrectement le pid des fils ? pour pouvoir ranger ses valeurs dans un pti tableau ?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/10/2007, 12h44
  2. [Debutant]Recuperer des données signé et les renndre non signées
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/02/2007, 14h01
  3. Réponses: 2
    Dernier message: 28/11/2006, 15h20
  4. [statusbar] recuperer des infos d'un autre prog
    Par noyax dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 20/12/2002, 15h52
  5. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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