0% ont trouvé ce document utile (0 vote)
26 vues2 pages

Exercice 1:: Premier Processus Fils /usr/bin/chage

test

Transféré par

yosriabdelwahed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues2 pages

Exercice 1:: Premier Processus Fils /usr/bin/chage

test

Transféré par

yosriabdelwahed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Exercice 1:

Écrivez un programme en C qui effectue les opérations suivantes :

✓ Le programme doit créer deux processus fils à l'aide de la fonction fork ().

o Le premier processus fils doit exécuter la commande /usr/bin/chage pour afficher


des informations sur le statut du mot de passe de l'utilisateur. Cela inclut des détails
tels que la dernière modification du mot de passe et la date d'expiration. Utilisez la
fonction execl() avec les paramètres suivants :

execl("/usr/bin/chage", ".......", "........", getenv("USER"), NULL);

o Le deuxième processus fils doit exécuter la commande /bin/passwd pour permettre


à l'utilisateur de changer son mot de passe. Utilisez la fonction execl () avec les
paramètres suivants :

execl("........", "passwd", NULL);

✓ Synchronisation : Le programme parent doit attendre que les deux processus fils se
terminent avant de quitter. Utilisez la fonction waitpid(........) pour assurer cette
synchronisation.

Exercice 2:
Écrire un programme en C qui simule un processus parent gérant deux processus fils. Le processus
parent crée deux fils à l'aide de fork().

Le Fils 1 s'exécute pendant une période déterminée.

Ensuite, le Fils 2 envoie un signal de suspension à Fils 1 en utilisant kill() avec le signal SIGSTOP, puis
exécute la commande ps pour afficher l'état de Fils 1 après sa suspension.

Après quelques secondes d'attente, Fils 2 envoie un signal à Fils 1 pour qu'il reprenne son exécution à
l'aide du signal SIGCONT.

Une fois que Fils 1 a terminé son exécution, le parent attend la terminaison des deux fils, puis se
termine à son tour."
Processus père
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
.................................

Processus fils-1

// Simuler un travail pendant quelques secondes

for (int i = 0; i < 5; i++) {

printf("Fils 1: Je fais mon travail... (%d)\n", i +


1);

sleep(1); // Simuler une tâche

Processus fils-2

.................... // Attendre un peu avant de suspendre le Fils 1

kill(..........,.........); // Suspendre Fils 2

// Exécuter la commande 'ps -el | grep <pid_fils2>' pour


vérifier l'état

char command[50];

snprintf(command, sizeof(command), "ps -el | grep %d",


pid_fils1);

system(command);
sleep(5);

// Reprendre Fils 1

Processus père

// Attendre la fin de Fils 1

// Attendre la fin de Fils 2

Vous aimerez peut-être aussi