ex2.md 922 B
Expliquez précisément pourquoi le programme produit ce message à double
Suite au fait que stdout
est flushé après l'appel de fork()
, vu que le
buffer est dupliqué dans le processus enfant, cela cause un affichage double.
Afin d'éviter cela, il aurait fallu flushé stdout
avant l'appel à fork()
.
printf("Voilà un mystère digne de Sherlock Holmes !\n");
fork();
setbuf
afin de corriger l'affichage
Modifiez le code en utilisant #include <stdio.h>
#include <unistd.h>
int main(void) {
setbuf(stdout, NULL);
printf("Voilà un mystère digne de Sherlock Holmes !");
fork();
printf("\n");
return 0;
}
fork
Déterminez l'appel système utilisé lors de l'utilisation de la fonction Le nom de l'appel système est clone
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f7c06d06350) = 266166