Bonsoir,
J'ai un léger soucis avec un programme, en fait je ne comprends pas pourquoi il fonctionne si il y a fflush et bloque sinon:
Je comprends pas en quoi le fait qu'on ne vide pas le buffer de stdout rende l'instruction read bloquante alors que tube[0] contient des données..
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 int main(){ int tube[2]; fd_set ensemble; int i = 0; char c = 'c'; pipe(tube); switch(fork()){ case -1: perror("fork"); exit(1); case 0: //Processus fils while(1){ write(tube[1], &c, 1); sleep(1); } break; default: while(1){ FD_ZERO(&ensemble); FD_SET(tube[0], &ensemble); select(FD_SETSIZE, & ensemble, NULL, NULL, NULL); printf("%d ", ++i); fflush(stdout); //Si on retire cette instruction, le programme bloque read(tube[0], &c, 1); } } return 0; }
Partager