Skip to content
Snippets Groups Projects
Commit b45c7bf6 authored by iliya.saroukha's avatar iliya.saroukha
Browse files

finished ex2

parent 6f0673d5
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,8 @@ $(TARGET): prog.o
$(CC) $(CFLAGS) -c $<
@printf "\n"
.PHONY: clean
clean:
rm -f *.o $(TARGET)
# 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()`.
```c
printf("Voilà un mystère digne de Sherlock Holmes !\n");
fork();
```
# Modifiez le code en utilisant `setbuf` afin de corriger l'affichage
```c
#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;
}
```
# Déterminez l'appel système utilisé lors de l'utilisation de la fonction `fork`
Le nom de l'appel système est `clone`
```sh
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f7c06d06350) = 266166
```
......@@ -2,6 +2,7 @@
#include <unistd.h>
int main(void) {
setbuf(stdout, NULL);
printf("Voilà un mystère digne de Sherlock Holmes !");
fork();
printf("\n");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment