Passer des données binaires à un exécutable

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Hello,

Voici ma situation : Je travaille sur un outil capable d'analyser une trame bus et de l'afficher sous forme de datagramme. Cet outil est destiné à être intégré dans plusieurs logiciels et j'en ai donc fait une bibliothèque que j'ai distribué aux autres équipes. Malheureusement, sur un des projets, les devs sont partis sur une solution où tous les outils sont forcément des exécutables qu'ils lancent en ligne de commande…

Mon problème est que normalement, mon outil attend des données binaires (une trame bus) en entrée. Je me retrouve donc à devoir fournir des données binaires à un exécutable et c'est là que je bloque.

Puisque je suis chargé de développer la version standalone de mon outil, j'avais pensé utiliser un pipe mais, à priori, je ne peux pas, pour d'obscures raisons. Du coup, j'ai pensé à utiliser un fichier temporaire mais se pose la question de sa suppression, notamment en cas d'arrêt brutal des outils (et aussi parce que la dernière fois, j'ai eu le droit à un fichier contenant un memcopy de leurs objets en mémoire et que j'ai dû me battre pour le décoder)

Je pensais aussi à convertir les données binaires en représentation ASCII, mais je ne suis pas fan vu que je ne maîtrise pas le format des données en entrée (rien ne me garantit que demain, les devs ne décident pas de fournir de l'octal plutôt que de l'hexa ou de rajouter des espaces…).

Je suis donc à la recherche d'une méthode efficace pour passer mes données binaires à mon exécutable.

Je précise que je travaille en C++ (avec possibilité de me tourner vers Python si besoin), pour Windows uniquement.

Merci à tous ceux qui prendront le temps de me lire.

Shave the whales! | Thistle

+0 -0

Cette réponse a aidé l'auteur du sujet

En première approche, je dirais que si l'équipe projet a défini que tout devait se faire par des executables, c'est à elle de spécifier le format d'entrée et de sortie.

Dans l'hypothèse ou elle ne le ferait pas, ("oh fait comme ça t'arrange on s'adaptera"), passe simplement les octets bruts sous forme d'une chaine hexadécimale. Ca se manipule facilement via xxd, et ça te demande très peu de travail. L'entrée et la sortie standard, c'est le meilleur moyen de passer des données dans un programme UNIX.

Édité par Natalya

+0 -0
Auteur du sujet

Merci beaucoup. Ta solution fait parfaitement l'affaire le temps de rectifier le tir.

Néanmoins, si d'autres ont des solution à proposer, je suis preneur. Ça me servira tôt ou tard…

En première approche, je dirais que si l'équipe projet a défini que tout devait se faire par des executables, c'est à elle de spécifier le format d'entrée et de sortie.Source:Natalya

Ils ont spécifié les entrants, mais c'était tellement tordu et irréaliste que j'ai refusé…

Shave the whales! | Thistle

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte