ajout tp03

This commit is contained in:
lefevre 2021-10-11 17:45:26 +02:00
parent 41c2fd6325
commit 3c2432be24
12 changed files with 261 additions and 0 deletions

BIN
ASR3.1/TP03 Processus/a.out Executable file

Binary file not shown.

View File

@ -0,0 +1,43 @@
#include <sys/types.h>
#include <unistd.h>
#include<stdio.h>
#include <stdlib.h>
#include<assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#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);
}

View File

@ -0,0 +1,12 @@
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(){
printf("NON");
if (fork()) {
printf("OUI\n");
}
}

View File

@ -0,0 +1,13 @@
je suis le pereje suis le fils !!!nistd.h>
#include <stdio.h>
int main(){
//printf("NON");
write(STDOUT_FILENO,"NON",3);
if (fork()) {
//printf("OUI\n");
write(STDOUT_FILENO,"OUI\n",4);
}
}

View File

@ -0,0 +1,42 @@
#include<stdio.h>
#include<stdlib.h>
#include <unistd.h>
#include<assert.h>
#include<sys/wait.h>
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;
}

View File

@ -0,0 +1,41 @@
#include <sys/types.h>
#include <unistd.h>
#include<stdio.h>
#include <stdlib.h>
#include<assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#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);
}

View File

@ -0,0 +1,41 @@
#include <sys/types.h>
#include <unistd.h>
#include<stdio.h>
#include <stdlib.h>
#include<assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#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);
}

View File

@ -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.

View File

@ -0,0 +1 @@
je suis le fils !!!

View File

@ -0,0 +1 @@
je suis le pereje suis le fils !!!

View File

@ -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

View File

@ -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