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