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

Shell et commandes GNU Discussion :

Fork et pipe


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Par défaut Fork et pipe
    Bonjour,
    Voila j'aimerai faire un programme qui crée deux fils avec fork().
    Le prog envoie aux deux fils en meme temps un tableau d'entier à ltravers un pipe
    Les fils le trie chacun de leur coté et le premier qui finit renvoi son pid au pere...

    Je ne vois comment faire pour envoyer en meme temps au deux...

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    ben en même temps... impossible


    en revanche, tu peux espérer synchroniser le commencement du traitement grâce à un signal
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Par défaut
    au même temps c-a-d ils vont lire au meme temps du pipe ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Par défaut
    oui bloquer avec un wait puis reveiller les deux avec un signal .

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Par défaut
    J'ai trouvé une combine avec des signaux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for (i = 0; i < 2; i++) {
      lst[i] = fork();
    }
    pid = lst[0];
    pid2 = lst[1];
     
      if (pid!=0) {
     
     
        printf("Mon premier fils est de pid %d\n", lst[1]);
        printf("Mon second fils est de pid %d\n", lst[0]);
    Comment faire pour détecter aussi le pid2?

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Par défaut
    J'ai résolu ça...
    Seul problème qui me reste je n'arrive pas a envoyé un signal à tout le monde en meme temps...

    j'ai fait kill(0, SIGUSR1);
    rien ne se passe...

    et kill(-1, SIGUSR1) ferme Gnome donc c pas top

    et si je fais un envoi de signal un par un, c toujours le meme qui arrive premier, logique lol

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Par défaut
    mais il faut que tu puisses intercepter le signal SIGUSR1, c'est avec siganl(SIGUSR1,UneFonction) ,normalement ca devras marcher .
    a+

Discussions similaires

  1. fork() et pipe(), eof non lu
    Par baccali dans le forum C
    Réponses: 9
    Dernier message: 24/09/2011, 20h51
  2. Exercice en c sur les forks+Pipe+exec
    Par Elendhil dans le forum Linux
    Réponses: 6
    Dernier message: 07/11/2007, 19h32
  3. problème chat avec socket/fork/pipe
    Par cedricdd dans le forum Réseau
    Réponses: 10
    Dernier message: 08/03/2007, 14h56
  4. Réponses: 1
    Dernier message: 07/04/2006, 13h35
  5. [PERL] Problème en essayant de comprendre fork et pipe
    Par LE NEINDRE dans le forum Langage
    Réponses: 6
    Dernier message: 04/10/2005, 15h23

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