diff --git a/ASR3.1/TP03 Processus/a.out b/ASR3.1/TP03 Processus/a.out new file mode 100755 index 0000000..6e26cc2 Binary files /dev/null and b/ASR3.1/TP03 Processus/a.out differ 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 + +