Passage d'informations d'un programme à un autre

Résolu
fabinou87 -  
fabinou87 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   1 846
 
Ok, je comprends mieux. Pourquoi ne pas utiliser des thread plutôt ? Cela sera mieux ;-).
0
fabinou87 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   2
 
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