Académique Documents
Professionnel Documents
Culture Documents
Objectifs :
Création et communication entre processus
1.2
1.3 s
1 TP N°3
Exercice 2 : La fonction execl()
3.1 Donnez le code source C d'un programme print.c qui affiche à l'écran la chaîne de caractères qui
lui est passée en paramètre en ligne de commande, par exemple print coucou. Compiler et tester ce
programme.
3. 2 Ecrire un programme prog1 qui crée un processus fils qui exécute print avec l’argument salut. On
utilisera la fonction execl.
1-
#include <stdio.h>
printf("%s\n", argv[1]);
return 0;
}
2-
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
pid_t pid;
2 TP N°3
pid = fork();
if (pid == -1) {
perror("Erreur lors de la création du processus fils");
return 1;
} else if (pid == 0) {
// Code exécuté par le processus fils
} else {
// Code exécuté par le processus parent
wait(NULL);
printf("le processus pere attend la terminison de son
fils");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
int main() {
pid_t child_pid = fork();
if (child_pid == 0) {
// Processus fils
int seconds = 0;
while (1) {
printf("Secondes écoulées : %d\n", seconds);
sleep(1);
seconds++;
}
} else if (child_pid > 0) {
// Processus père
sleep(10);
3 TP N°3
kill(child_pid, SIGKILL);
} else {
// Erreur lors de la création du processus fils
printf("Erreur lors de la création du processus
fils.\n");
return 1;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
pid_t pid1, pid2;
int status, pid_premier;
pid_premier = wait(&status);
if (pid_premier == pid1) {
4 TP N°3
printf("Le processus %d (ls -l) a terminé en premier.\n",
pid1);
} else {
5 TP N°3