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

Threads & Processus C++ Discussion :

generation de processus


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut generation de processus
    bonjour

    j'ai un petit code qui genere des processus et qui les "endormis" pour un delai bien determine le voici:

    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  <unistd.h>
    # include  <iostream>
     
    using namespace std;
     
    void routine( char *nom, int delai )
    {
            pid_t pid;
     
            pid = getpid( );
     
            while( 1 )
            {
                    cout << endl;
                    cout << "processus " << nom << ", pid= " << pid 
                            << ", delai= " << delai << endl << flush; 
                    sleep( delai );
            }
    }
     
    int main( )
    {
            if( fork() == 0 )
                    routine( "fils 1", 2 );
     
            if( fork() == 0 )
                    routine( "fils 2", 4 );
     
            routine( "pere  ", 8 );
     
            return 0;
    }
    et quand je l'execute il m'affiche:
    processus fils 1, pid= 15861, delai= 2

    processus fils 2, pid= 15862, delai= 4

    processus pere , pid= 15860, delai= 8

    processus fils 1, pid= 15861, delai= 2

    processus fils 2, pid= 15862, delai= 4

    processus fils 1, pid= 15861, delai= 2

    processus fils 1, pid= 15861, delai= 2

    processus pere , pid= 15860, delai= 8

    processus fils 2, pid= 15862, delai= 4
    ....

    ce que je ne comprend pas , pourquoi le programme sort de la premiere boucle qui est "infinie" WHILE(1) !!!!

    est ce que "flush" a un effet!!!

    merci

  2. #2
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Qu'est ce qui te fait dire qu'il sort de la boule infini ?

  3. #3
    Membre éclairé Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut
    Citation Envoyé par Higestromm
    Qu'est ce qui te fait dire qu'il sort de la boule infini ?
    comme vous le voyez dans la fonction routine on a une boucle while qui est conditionnée par 1 !!!

    alors

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    OK, puisqu'il y a des gens qui ne comprennent pas la question, on répète:
    La question n'est pas "Qu' est-ce qu'une boucle infinie" mais "Qu'est-ce qui te fait dire que le programme sort de sa boucle infinie"

    Alors, que ce passe-t-il exactement ? Les programment s'arrêtent ?
    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 elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut
    Citation Envoyé par Médinoc
    OK, puisqu'il y a des gens qui ne comprennent pas la question, on répète:
    La question n'est pas "Qu' est-ce qu'une boucle infinie" mais "Qu'est-ce qui te fait dire que le programme sort de sa boucle infinie"

    Alors, que ce passe-t-il exactement ? Les programment s'arrêtent ?

    le probleme est le suivant:
    quand le programme fait le premier appel pour routine il fait endormir le premier processus à l'aide de sleep. mais c'est comment il est sorti de la boucle while pour afficher fils 2 puis parent ...

  6. #6
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Bah tu créer des processus... c'est normal que leurs executions soit faite en parallele !

Discussions similaires

  1. generation xml multi processus
    Par mickael.guilbert dans le forum Modules
    Réponses: 3
    Dernier message: 28/05/2007, 19h46
  2. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/10/2002, 14h47
  3. Réponses: 2
    Dernier message: 04/10/2002, 09h13
  4. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21

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