bonjour
j'ai un petit code qui genere des processus et qui les "endormis" pour un delai bien determine le voici:
et quand je l'execute il m'affiche:
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; }
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
Partager