Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/05/2006, 20h31   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 149
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 149
Points : 14
Points : 14
Par défaut Fork et pipe

Bonjour,
Voila j'aimerai faire un programme qui crée deux fils avec fork().
Le prog envoie aux deux fils en meme temps un tableau d'entier à ltravers un pipe
Les fils le trie chacun de leur coté et le premier qui finit renvoi son pid au pere...

Je ne vois comment faire pour envoyer en meme temps au deux...
Ylias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 21h21   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
ben en même temps... impossible


en revanche, tu peux espérer synchroniser le commencement du traitement grâce à un signal
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 21h26   #3
Membre du Club
 
Inscription : avril 2005
Messages : 164
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 164
Points : 54
Points : 54
au même temps c-a-d ils vont lire au meme temps du pipe ?
jamalmoundir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 21h28   #4
Membre du Club
 
Inscription : avril 2005
Messages : 164
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 164
Points : 54
Points : 54
oui bloquer avec un wait puis reveiller les deux avec un signal .
jamalmoundir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 22h40   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 149
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 149
Points : 14
Points : 14
J'ai trouvé une combine avec des signaux...

Code :
1
2
3
4
5
6
7
8
9
10
11
for (i = 0; i < 2; i++) {
  lst[i] = fork();
}
pid = lst[0];
pid2 = lst[1];
 
  if (pid!=0) {
 
 
    printf("Mon premier fils est de pid %d\n", lst[1]);
    printf("Mon second fils est de pid %d\n", lst[0]);
Comment faire pour détecter aussi le pid2?
Ylias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 22h51   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 149
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 149
Points : 14
Points : 14
J'ai résolu ça...
Seul problème qui me reste je n'arrive pas a envoyé un signal à tout le monde en meme temps...

j'ai fait kill(0, SIGUSR1);
rien ne se passe...

et kill(-1, SIGUSR1) ferme Gnome donc c pas top

et si je fais un envoi de signal un par un, c toujours le meme qui arrive premier, logique lol
Ylias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 09h13   #7
Membre du Club
 
Inscription : avril 2005
Messages : 164
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 164
Points : 54
Points : 54
mais il faut que tu puisses intercepter le signal SIGUSR1, c'est avec siganl(SIGUSR1,UneFonction) ,normalement ca devras marcher .
a+
jamalmoundir est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h48.


 
 
 
 
Partenaires

Hébergement Web