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

Communication entre processus en C

Le programme en C crée une communication entre un processus parent et un processus enfant à l'aide de tubes. Le parent envoie et reçoit des messages de l'enfant, qui envoie un message initial et attend une réponse. Les tubes sont correctement fermés après l'utilisation pour éviter les fuites de ressources.

Transféré par

kaboreyveslaurent0
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues2 pages

Communication entre processus en C

Le programme en C crée une communication entre un processus parent et un processus enfant à l'aide de tubes. Le parent envoie et reçoit des messages de l'enfant, qui envoie un message initial et attend une réponse. Les tubes sont correctement fermés après l'utilisation pour éviter les fuites de ressources.

Transféré par

kaboreyveslaurent0
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

#include <stdio.

h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

int main() {

int parent_to_child[2];

int child_to_parent[2];

pid_t pid;

char message_enfant[] = "leon";

char reponse_parent[] = "bien";

char buffer_enfant[100];

char buffer_parent[100];

// Création des deux tubes

if (pipe(parent_to_child) == -1 || pipe(child_to_parent) == -1) {

perror("pipe");

exit(1);

// Création du processus enfant

pid = fork();

if (pid < 0) {

perror("fork");

exit(1);

} else if (pid > 0) { // Processus parent

// Fermeture des côtés inutilisés du tube

close(parent_to_child[0]);

close(child_to_parent[1]);
// Le parent attend de lire le message de l'enfant

read(child_to_parent[0], buffer_parent, sizeof(buffer_parent));

printf("Message reçu par le parent : %s\n", buffer_parent);

// Le parent envoie la réponse "bien" à l'enfant

write(parent_to_child[1], reponse_parent, strlen(reponse_parent) + 1);

// Fermeture des côtés utilisés du tube

close(parent_to_child[1]);

close(child_to_parent[0]);

} else { // Processus enfant

// Fermeture des côtés inutilisés du tube

close(parent_to_child[1]);

close(child_to_parent[0]);

// L'enfant envoie le message "leon" au parent

write(child_to_parent[1], message_enfant, strlen(message_enfant) + 1);

// L'enfant attend de lire la réponse du parent

read(parent_to_child[0], buffer_enfant, sizeof(buffer_enfant));

printf("Réponse reçue par l'enfant : %s\n", buffer_enfant);

// Fermeture des côtés utilisés du tube

close(parent_to_child[0]);

close(child_to_parent[1]);

return 0;

Vous aimerez peut-être aussi