Posez votre question Signaler

[C] Pipe/Fork

Apaachee 151Messages postés 3 janvier 2009Date d'inscription 25 août 2011Dernière intervention - Dernière réponse le 6 juin 2009 à 12:16
Bonjour,
Je dois réaliser un programme en C dont le but est de créer (N-1) fils issus d'un même père et dont chacun d'entre eux est relié par un tube.
Le père transmet un entier au premier fils et cet entier devra parcourir tous les fils ensuite grâce aux tubes en l'incrémentant dans chaque passage dans un fils.
Je suis vraiment perdu pour le code et pour les pipes...
Lire la suite 

[C] Pipe/Fork »

Suggestions
2 réponses
Réponse
+0
moins plus
Salut,
Déjà, tu peux commencer par faire le même exercice avec un seul fils (un seul fork).
Donc le père envoie un nombre à son fils, et son fils l'affiche (ne serait-ce que pour vérifier que ça marche ^^).
Voici un exemple de pipe : http://en.tldp.org/LDP/lpg/node11.html. Tu peux t'en inspirer largement.
Une fois que t'aurais réussi, tu pourras passer à la création de plusieurs fils.
N'hésite pas à poster ton code ou/et à poser des questions techniques si tu as besoin d'aide.

Cdlt
Ajouter un commentaire
Réponse
+0
moins plus
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main(){
	int num_proc = 0;
	int nb_proc = 10;
	int essai;
	pid_t pid;

	do{
		essai=0;
		do{
			pid = fork();
			essai ++;
		}while ((pid == -1)&&(essai<100));

		if(essai!=100 && pid!=0){
			num_proc++;
		}
		else if(pid==0){
			
			printf("num_proc : %d \n",num_proc);
			pid = getpid();
			_exit(pid);
		}
	}while ((pid!=0) && (num_proc<=nb_proc));
}


J'ai créé mes N processus, ne reste plus qu'à leur transmettre une variable incrémentée. (ton lien a l'air mort je ne vois pas ton exemple :S)
Ajouter un commentaire
Ce document intitulé « [C] Pipe/Fork » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook