diff --git a/TD2/Exemple1.c b/TD2/Exemple1.c new file mode 100644 index 0000000..4a7188e --- /dev/null +++ b/TD2/Exemple1.c @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include + +int main() { + + pid_t fils_pid ; + + fils_pid = fork (); + + if ( fils_pid == 0) { + printf("Je suis le fils avec pid %d\n",getpid()); exit(3); + } else { + if (fils_pid > 0) { + printf ("Je suis le pere avec pid %d.\n" , getpid ()); + printf("Jā€™attends que mon fils se termine\n"); + wait (NULL) ; + printf("Normalement mon fils en a fini!\n"); + } else { + printf("Erreur dans la creation du fils\n"); + } + } + exit (0); +} \ No newline at end of file diff --git a/TD2/Exemple2.c b/TD2/Exemple2.c new file mode 100644 index 0000000..940ee94 --- /dev/null +++ b/TD2/Exemple2.c @@ -0,0 +1,24 @@ +/* fork2b.c */ + + +#include +#include +#include +#include + +int main(int argc, char *argv[]) { + + int i, n = 5; + pid_t childpid; + + for (i=0; i= 0) + ; + + return EXIT_SUCCESS; +} diff --git a/TD2/Exemple3.c b/TD2/Exemple3.c new file mode 100644 index 0000000..22cd8ab --- /dev/null +++ b/TD2/Exemple3.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include + + +void fils(int i); + +int main() { + int status ; + pid_t pid; + + pid = fork(); + + if (pid == -1) perror("fork"); + else if (pid ==0) // creation du second fils + fils (1) ; + + pid = fork(); + + if (pid == -1) perror("fork"); + else if (pid ==0) // creation du second fils + fils (2) ; + + + if (wait(&status) > 0) + printf("fin du fils %d\n", WEXITSTATUS(status)); + else perror("wait"); + + if (wait(&status) > 0) + printf("fin du fils %d\n", WEXITSTATUS(status)); + else perror("wait"); + + + if (wait(&status) > 0) + printf("fin du fils %d\n", WEXITSTATUS(status)); + else perror("wait"); + + return 0 ; +} + +void fils (int i) { + sleep(2); + exit(i); +} \ No newline at end of file