Compare commits

...

1 Commits

Author SHA1 Message Date
9bf3a922b2 add TP03 SCR 2025-10-08 15:48:44 +02:00
10 changed files with 132 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
PID PPID COMMAND S
4331 1423 bash S
4732 4331 \_ a.out S
4733 4732 \_ a.out S
4736 4733 | \_ a.o S
4737 4733 | \_ a.o S
4734 4732 \_ a.out S
4735 4732 \_ a.out S
-> Il y aura donc 6 appels à a.out.

View File

@@ -0,0 +1,16 @@
#include <stdio.h>
#include <stdlib.h>
# include <sys/types.h>
# include <unistd.h>
int main() {
fork();
if (fork()){
fork();
}
printf("A\n");
sleep(20);
}

View File

@@ -0,0 +1,6 @@
[baudrier@salle229-06 Exercise2]$ gcc ex1-stdio.c
[baudrier@salle229-06 Exercise2]$ ./a.out
NONOUI
NON[baudrier@salle229-06 Exercise2]$ gcc ex1-syscall.c
[baudrier@salle229-06 Exercise2]$ ./a.out
NONOUI

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,14 @@
#include <sys/types.h>
#include <unistd.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,15 @@
-> Le code de cet exercice permet de copier le contenu d'un fichier dans un autre fichier.
-> Quand on décommente le fork(), il y a des entrelacements possibles duent à l'exécution simultanée des processus.
Lecture Père = LP
Ecriture Père = EP
Lecture Fils = LF
Ecriture Fils = EF
Il y a plusieurs combinaisons possibles qui peuvent arriver :
- LP (a) -> LF (b) -> EF (b) -> EP (a)
- LP (a) -> EP (a) -> LF (b) -> EF (b)
- etc...

View File

@@ -0,0 +1,45 @@
#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 @@
je m'appelle nathan

View File

@@ -0,0 +1 @@
je map'pelle nathan

View File

@@ -0,0 +1,12 @@
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
assert(argc == 2);
long i = strtol(argv[1], NULL, 10);
return EXIT_SUCCESS;
}