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;
} |