Bonjour à tous,
J'essaie de mettre en place une communication entre deux fichiers.
-acquisition.c :
1-reçoit en argument un int envoyé depuis interface.cpp
2-envoie deux tableaux 1D (ou un double pour commencer) -> création d'un tube nommé
-interface.cpp :
1-envoie de l'int au fichier acquisition.c
2-reception des deux tableaux 1D (ou un double pour commencer) -> lecture du tube nommé
Pour le moment j'arrive à envoyer un double depuis le fichier acquisition.c vers le fichier interface.cpp
Problème : Lancer l’exécutable Linux depuis le fichier interface.cpp
Tests :
1-utiliser la commande execl mais apparemment cela ne fonctionne pas bien et fait planter mon programme interface.cpp
2-On peut créer deux tubes nommés pour faire passer des données mais ça ne fonctionne pas, il doit manquer des signaux de contrôles ou autres!
Si vous avez d'autres solutions n'hésitez pas.
Merci d'avance
# lire le cours sur execl et sur les tubes nommés
Posté par NeoX . Évalué à 3.
ca me parait etre l'idée de base.
tel que decrit :
- ca ressemble à un devoir à rendre dans la semaine
- sans voir le code c'est difficile de dire ou ca se bloque.
alors comme point de depart je te propose la page de man de
execl
en francais : http://www.linuxfr-france.org.invalid/article/man-fr/man3/execv-3.html
en anglais : http://linux.die.net/man/3/execl
[^] # Re: lire le cours sur execl et sur les tubes nommés
Posté par electro575 . Évalué à 0. Dernière modification le 13 avril 2015 à 10:02.
Je m’intéresse à ça pour mon stage plutôt. J'ai besoin d'un .c pour récupérer des données depuis un matériel mais sa bibliothèque n'est pas compatible avec g++ …
Du coup je dois scinder mon travail ! Quelle chance, ça me retarde un peu mais j'en apprends également.
Je cherche a récupérer des données d'un fichier acquisition.c.
1-Pour cela j'envoie des arguments depuis le programme interface.cpp vers acquisition.c avec la commande execl. Ça m'évite de créer un tube nommé et de traiter la chaine de caractères, en plus cette méthode ne fonctionne pas très bien malheureusement.
2-Le programme acquisition.c fait l'acquisition des données et créé un tube nommé et écrit dessus.
3-Le fichier interface.cpp vient lire le tube nommé.
CODE :
Syntaxe de execl :
execl("chemin d'accès/prog","prog","arg1","arg2",…,NULL);
Programme :
Quelques warnings :
[^] # Re: lire le cours sur execl et sur les tubes nommés
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
Pour avoir joué il longtemps avec cela, il faut penser à flusher (flush) car les écritures se font en mode block généralement pour aller plus vite donc en général, l'autre programme ne reçoit jamais les données si elles sont petites…
Dans ton cas, je n'ai pas regardé de près ton code. Désolé.
[^] # Re: lire le cours sur execl et sur les tubes nommés
Posté par electro575 . Évalué à 0.
Ben j'ai juste l'appel du programme acquisition.c qui ne fonctionne pas.
Si je lance les deux programmes separement ca fonctionne.
Le tube nommé est écrit par acq.c et lu & affiché par interface.cpp
Merci pour ta precision
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.