Rechercher : dans
Par :

[C] Pipe/Fork

Dernière réponse le 6 jun 2009 à 12:16:09 Apaachee, le 6 jun 2009 à 10:31:00 
 Signaler ce message aux modérateurs

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...

Configuration: Windows Vista
Firefox 3.0.10

Meilleures réponses pour « [C] Pipe/Fork » dans :
Que fait un fork() ? Voir...ou le petit fork() illustré.... Introduction Lancement du père Le fork Maîtriser le fil d'exécution du père et celui du fils Les variables et les descripteurs de fichiers La synchronisation La fin Notes et...
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
3D Secure / Verified by Visa / SecureCode: Qu'est-ce que c'est ? VoirDepuis octobre 2008, les banques et commerçants en ligne ont commencé à adopter le système 3DSecure pour les paiements sur Internet. Qu'est-ce que c'est ? 3DSecure est appelé "Verified by Visa" chez Visa, et "SecureCode" chez Mastercard. (Les logos...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...

1

fiddy, le 6 jun 2009 à 12:04:42

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
Google is your friend

Répondre à fiddy

2

 Apaachee, le 6 jun 2009 à 12:16:09

#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)

Répondre à Apaachee