Passage d'informations d'un programme à un autre

Résolu/Fermé
fabinou87 - Modifié par fabinou87 le 8/05/2013 à 16:11
fabinou87 Messages postés 30 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 9 mars 2016 - 8 mai 2013 à 19:47
Bonjour à tous,

Codant pour un projet pour mes études, je rencontre une petite difficulté:
Je possède deux programmes, disons programme1 et programme2.

Dans le programme1, je possède 9 chaînes de 9 caractères sous la forme chaine[i][j] (chaine[9][9]).
i représente une des chaînes, et l'ensemble j l'ensemble des caractères composant la chaîne i.

Le programme2 quand à lui pour le moment, reçoit en paramètre une chaîne de 9 caractère et après traitement de la chaîne, m'affiche un certains nombre (inconnu) de chaîne de 9 caractères crépondant à la chaîne que je lui ai fourni.

Ce que je veux faire est dans l'idée ( et seulement dans l'idée ) simple : Je veux pour chaque chaîne du programme1, appeler le programme2 et récupérer toutes les possibilités qui seront générées.
J'ai essayé, notamment avec des forks en utilisant system() et en jouant sur les paramètres du main du programme2, mais je dois avouer que là je ne m'en sors pas et ne vois vraiment pas comment faire.

Si quelqu'un pouvait m'aider, je lui serais très reconnaissant.
Merci par avance !

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 mai 2013 à 17:11
J'ai l'impression que tu n'as pas bien saisi le fonctionnement de fork. A mon avis, la famille exec*() sera plus utilise dans ton cas.
Pourrais-tu montrer ton code ? Ce sera plus simple pour t'aider.
0
fabinou87 Messages postés 30 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 9 mars 2016 2
8 mai 2013 à 17:58
Bonjour Fiddy, et merci de ta réponse =)

Oh si si j'ai bien compris, j'essayais juste de traiter plusieurs chaines du programme1 en parallèle pour gagner sur le temps d'exécution.

En revanche, j'ai un petit soucis pour intégrer le code dans ce message. Pour ne pas perdre de temps, je t'ai envoyé celui-ci par mp.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 mai 2013 à 18:41
J'ai vu une fonction system() -> utilise plutôt les familles exec() ou popen().

Sinon, souhaites-tu vraiment avoir deux programmes indépendants ? Et à partir de l'un appeler l'autre ?
Pourquoi ne pas pas mettre un .c supplémentaire dans ton projet ? Et d'appeler ses fonctions directement ? Ou sinon, pourquoi ne pas faire une bibliothèque (genre dll) qui contiendrait le code ?
Si tu souhaites vraiment appeler un programme indépendamment, tu peux utiliser la famille exec() ou popen().
0
fabinou87 Messages postés 30 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 9 mars 2016 2
8 mai 2013 à 18:53
Mais oui !!!

Effectivement, en créant un .h du programme2 et en l'incluant dans programme1, tout est beaucoup plus simple !
Je pourrais l'appeler facilement en mettant les paramètres que je souhaite et en utilisant des fork().

excellente idée, merci beaucoup !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 mai 2013 à 18:56
Mais de rien.

Pourquoi souhaites-tu utiliser des fork() ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabinou87 Messages postés 30 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 9 mars 2016 2
8 mai 2013 à 19:24
Et bien en fait, dans programme1 le tableau[9][9] possède donc 9 chaînes de caractères.
tableau[4][3] représente par exemple le 4ème caractère de la 5ème chaîne.

Pour chacune de ces chaînes, je veux appeler programme2, qui va lui générer un certains nombre de chaînes de 9 caractères en réponse.

Je voulais utiliser des fork pour traiter les 9 chaines du programme1 en même temps, appeler programme2 9 fois en parallèle donc.

Seul soucis, lors de l'apelle, ex :
//programme1:

int main
{
...
programme2(tab[4]);
}

Dans ce cas, je ne passe pas au programme2 seulement la 5ème chaine, mais aussi la 6ème, la septième etc jusqu'à la 9ème à la suite.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 mai 2013 à 19:42
Ok, je comprends mieux. Pourquoi ne pas utiliser des thread plutôt ? Cela sera mieux ;-).
0
fabinou87 Messages postés 30 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 9 mars 2016 2
8 mai 2013 à 19:47
A vrai dire, je ne connais pas du tout encore. ^^
Je suis étudiant et je n'ai encore pas vu ceci. L'utilisation de fork m'est d'ailleurs demandée.

Tu aurais une idée pour récupérer la chaine de mon tab sans récupérer toutes les autres derrière comme expliqué plus haut ? Je viens d'essayer pleins de trucs. Soit je récupère toute la fin soit j'ai des problèmes de typages.
0