From 3c2432be24d44247928c43c46fcbfb8fb7993549 Mon Sep 17 00:00:00 2001 From: lefevre Date: Mon, 11 Oct 2021 17:45:26 +0200 Subject: [PATCH] ajout tp03 --- ASR3.1/TP03 Processus/a.out | Bin 0 -> 16496 bytes ASR3.1/TP03 Processus/copy1byte.c | 43 +++++++++++++++++++++++++++ ASR3.1/TP03 Processus/ex1-stdio.c | 12 ++++++++ ASR3.1/TP03 Processus/ex1-syscall.c | 13 ++++++++ ASR3.1/TP03 Processus/exercie4.c | 42 ++++++++++++++++++++++++++ ASR3.1/TP03 Processus/fork_and_fd1.c | 41 +++++++++++++++++++++++++ ASR3.1/TP03 Processus/fork_and_fd2.c | 41 +++++++++++++++++++++++++ ASR3.1/TP03 Processus/note.txt | 25 ++++++++++++++++ ASR3.1/TP03 Processus/toto | 1 + ASR3.1/TP03 Processus/toto2 | 1 + ASR3.1/TP03 Processus/toto3 | 21 +++++++++++++ ASR3.1/TP03 Processus/toto4 | 21 +++++++++++++ 12 files changed, 261 insertions(+) create mode 100755 ASR3.1/TP03 Processus/a.out create mode 100644 ASR3.1/TP03 Processus/copy1byte.c create mode 100644 ASR3.1/TP03 Processus/ex1-stdio.c create mode 100644 ASR3.1/TP03 Processus/ex1-syscall.c create mode 100644 ASR3.1/TP03 Processus/exercie4.c create mode 100644 ASR3.1/TP03 Processus/fork_and_fd1.c create mode 100644 ASR3.1/TP03 Processus/fork_and_fd2.c create mode 100644 ASR3.1/TP03 Processus/note.txt create mode 100644 ASR3.1/TP03 Processus/toto create mode 100644 ASR3.1/TP03 Processus/toto2 create mode 100644 ASR3.1/TP03 Processus/toto3 create mode 100644 ASR3.1/TP03 Processus/toto4 diff --git a/ASR3.1/TP03 Processus/a.out b/ASR3.1/TP03 Processus/a.out new file mode 100755 index 0000000000000000000000000000000000000000..6e26cc2af9ecf2c5d2fbc9c0d9066172b9fad650 GIT binary patch literal 16496 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 Dz&=7L literal 0 HcmV?d00001 diff --git a/ASR3.1/TP03 Processus/copy1byte.c b/ASR3.1/TP03 Processus/copy1byte.c new file mode 100644 index 0000000..f6e9b88 --- /dev/null +++ b/ASR3.1/TP03 Processus/copy1byte.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define msg1 "je suis le pere" +#define msg2 "je suis le fils !!!" +int main(int argc,char * argv[]){ + + int infd,outfd; + ssize_t nbread; + char buf[1]; + pid_t p; + + if (argc != 3){ + + printf("%s infile outfile\n",argv[0]); + exit(1); + } + + infd = open(argv[1],O_RDONLY); + assert(infd >= 0); + outfd = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644); + assert(outfd >= 0); + +// p=fork(); // <- decommentez cette ligne + while(1){ + + nbread=read(infd,buf,sizeof(buf)); + if (nbread <=0 ) break; + write(outfd,buf,sizeof(buf)); + + } + + + close(infd); + close(outfd); +} + diff --git a/ASR3.1/TP03 Processus/ex1-stdio.c b/ASR3.1/TP03 Processus/ex1-stdio.c new file mode 100644 index 0000000..0954a59 --- /dev/null +++ b/ASR3.1/TP03 Processus/ex1-stdio.c @@ -0,0 +1,12 @@ +#include +#include +#include + +int main(){ + + printf("NON"); + if (fork()) { + printf("OUI\n"); + } +} + diff --git a/ASR3.1/TP03 Processus/ex1-syscall.c b/ASR3.1/TP03 Processus/ex1-syscall.c new file mode 100644 index 0000000..85b7aae --- /dev/null +++ b/ASR3.1/TP03 Processus/ex1-syscall.c @@ -0,0 +1,13 @@ +je suis le pereje suis le fils !!!nistd.h> +#include + +int main(){ + + //printf("NON"); + write(STDOUT_FILENO,"NON",3); + if (fork()) { + //printf("OUI\n"); + write(STDOUT_FILENO,"OUI\n",4); + } +} + diff --git a/ASR3.1/TP03 Processus/exercie4.c b/ASR3.1/TP03 Processus/exercie4.c new file mode 100644 index 0000000..2b29813 --- /dev/null +++ b/ASR3.1/TP03 Processus/exercie4.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include + + +int main(int argc, char * argv[]){ + + int status; + + pid_t p; + + p = fork(); + + //Gestion des erreurs + if (p == -1) { + perror("ERREUR\n"); + return EXIT_FAILURE; + } + + //Père + if (p>0) { + printf ("Le pid %d\n", getpid()); + } + + //Fils + if (p==0) { + + } + + wait (&status); + + + + + return EXIT_SUCCESS; + + + +} + diff --git a/ASR3.1/TP03 Processus/fork_and_fd1.c b/ASR3.1/TP03 Processus/fork_and_fd1.c new file mode 100644 index 0000000..514fc90 --- /dev/null +++ b/ASR3.1/TP03 Processus/fork_and_fd1.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define msg1 "je suis le pere" +#define msg2 "je suis le fils !!!" +int main(int argc,char * argv[]){ + + int outfd; + pid_t p; + + if (argc != 2){ + + printf("%s file\n",argv[0]); + exit(1); + } + + //p=fork(); + outfd = open(argv[1],O_WRONLY|O_CREAT,0644); + assert(outfd >= 0); + p=fork(); + switch(p){ + case (pid_t)-1 : + perror(NULL); + exit(2); + + case (pid_t)0 : + write(outfd,msg2,strlen(msg2)); + break; + default : + write (outfd,msg1,strlen(msg1)); + break; + } + close(outfd); +} + diff --git a/ASR3.1/TP03 Processus/fork_and_fd2.c b/ASR3.1/TP03 Processus/fork_and_fd2.c new file mode 100644 index 0000000..0a7c5e1 --- /dev/null +++ b/ASR3.1/TP03 Processus/fork_and_fd2.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define msg1 "je suis le pere" +#define msg2 "je suis le fils !!!" +int main(int argc,char * argv[]){ + + int outfd; + pid_t p; + + if (argc != 2){ + + printf("%s file\n",argv[0]); + exit(1); + } + + p=fork(); + outfd = open(argv[1],O_WRONLY|O_CREAT,0644); + assert(outfd >= 0); + //p=fork(); + switch(p){ + case (pid_t)-1 : + perror(NULL); + exit(2); + + case (pid_t)0 : + write(outfd,msg2,strlen(msg2)); + break; + default : + write (outfd,msg1,strlen(msg1)); + break; + } + close(outfd); +} + diff --git a/ASR3.1/TP03 Processus/note.txt b/ASR3.1/TP03 Processus/note.txt new file mode 100644 index 0000000..81d4522 --- /dev/null +++ b/ASR3.1/TP03 Processus/note.txt @@ -0,0 +1,25 @@ +ex 1: + +Les deux fichiers affichent NONOUI. +Pour le fichier ex1-stdio.c : + le printf "NON" écrit dans le buffer père et fils. Ce dernier n'est pas vidé, alors si le fork réussit, alors ont print "OUI" dans le père donc on a NONOUI. Quand les deux meurts, les buffeurs sont vidés et cela affiche NONOUI (père) et NON (fils) + + + +Pour le fichier ex1-syscall.c : + stdout_fileno est un desripteur de fichier du systeme linux. + + +ex 2: +./a.out toto +Pour le fichier fork_and_fd1 : je suis pereje suis fils +On fait un fork(). +offst + +Pour le fichier fork_and_fd2 : je suis le fils + + + +ex 3: + +fork modifie l'ordre des octets. diff --git a/ASR3.1/TP03 Processus/toto b/ASR3.1/TP03 Processus/toto new file mode 100644 index 0000000..8e23c20 --- /dev/null +++ b/ASR3.1/TP03 Processus/toto @@ -0,0 +1 @@ +je suis le fils !!! \ No newline at end of file diff --git a/ASR3.1/TP03 Processus/toto2 b/ASR3.1/TP03 Processus/toto2 new file mode 100644 index 0000000..e015745 --- /dev/null +++ b/ASR3.1/TP03 Processus/toto2 @@ -0,0 +1 @@ +je suis le pereje suis le fils !!! \ No newline at end of file diff --git a/ASR3.1/TP03 Processus/toto3 b/ASR3.1/TP03 Processus/toto3 new file mode 100644 index 0000000..ea44f2e --- /dev/null +++ b/ASR3.1/TP03 Processus/toto3 @@ -0,0 +1,21 @@ +ex 1: + +Les deuxf ichiers affichent NONOUI. +Pour le fichier ex1-stdio.c : + le printf "NON" écrit dans le buffer père et fils. Ce dernier n'est pas vidé, alors si le fork réussit, alors ont print "OUI" dans le père donc on a NONOUI. Quand les deux meurts, les buffeurs sont vidés et cela affiche NONOUI (père) et NON (fils) + + + +Pour le fichier ex1-syscall.c : + stdout_fileno est un desripteur de fichier du systeme linux. + + +ex 2: +./a.out toto +Pour le fichier fork_and_fd1 : je suis pereje suis fils +On fait un fork(). +offst + +Pour le fichier fork_and_fd2 : je suis le fils + + diff --git a/ASR3.1/TP03 Processus/toto4 b/ASR3.1/TP03 Processus/toto4 new file mode 100644 index 0000000..9778909 --- /dev/null +++ b/ASR3.1/TP03 Processus/toto4 @@ -0,0 +1,21 @@ +ex 1: + +Les deux fichiers affichent NONOUI. +Pour le fichier ex1-stdio.c : + le printf "NON" écrit dans le buffer père et fils. Ce dernier n'est pas vidé, alors si le fork réussit, alors ont print "OUI" dans le père donc on a NONOUI. Quand les deux meurts, les buffeurs sont vidés et cela affiche NONOUI (père) et NON (fils) + + + +Pour le fichier ex1-syscall.c : + stdout_fileno est un desripteur de fichier du systeme linux. + + +ex 2: +./a.out toto +Pour le fichier fork_and_fd1 : je suis pereje suis fils +On fait un fork(). +offst + +Pour le fichier fork_and_fd2 : je suis le fils + +