Récupérer le flux de données en sortie d'un programme C
9 réponses
GG²
Bonjour,
Je souhaiterais connaître une méthode pour pouvoir récupérer le flux
d'informations issues d'un programme pour pouvoir le réinjecter dans un
autre.
Je m'explique: un soft en C génére plusieurs fichiers, et un flux texte à
l'écran. Je voudrai récupérer ce flux en "live" (pendant que le programme
continue de tourner) afin de l'envoyer dans une socket, ou pipe, pour une
utilisation directe via un autre programme, le tout en temps réel.
Existe-t-il un moyen de faire cela sous Unix/Linux ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal Bourguignon
"GG²" writes:
Bonjour,
Je souhaiterais connaître une méthode pour pouvoir récupérer le flux d'informations issues d'un programme pour pouvoir le réinjecter dans un autre. Je m'explique: un soft en C génére plusieurs fichiers, et un flux texte à l'écran. Je voudrai récupérer ce flux en "live" (pendant que le programme continue de tourner) afin de l'envoyer dans une socket, ou pipe, pour une utilisation directe via un autre programme, le tout en temps réel.
Existe-t-il un moyen de faire cela sous Unix/Linux ?
Comment l'envoit-il à l'écran? Est-ce via un émulateur de terminal comme xterm ou directement comme une bitmap dans une fenêtre X?
Dans le premier cas, on peut envisager une redirection:
pgm > output
mais il est possible que le programme s'amuse à ouvrir /dev/tty auquel cas c'est plus difficile de rediriger.
Dans le second cas, en supposant que le programme utilise la primitive X pour _dessiner_ du texte, on doit pouvoir patcher un serveur X pour logger les sorties de texte. Mais rien ne le garanti: le programme peut parfaitement dessiner les lettres pixel par pixel ou utiliser des jpeg pour afficher des titres, etc...
Conclusion: le mieux c'est de:
1- lire la doc du programme, il y a peut être une option pour l'utiliser en mode batch et envoyer la sortie dans un fichier au lieu de l'écran.
2- modifier le source du programme pour en faire un programme batch au lieu d'un programme GUI de merde. D'ailleurs, avec un peut de chance, c'est un programme unix construit à partir d'un "moteur" CLI/batch normal et une couche GUI disticte: on peut alors utiliser directement le moteur.
Bonne lecture de fond:
The Art of Unix Programming Eric S. Raymond http://catb.org/~esr/writings/taoup/html/ (en particulier, chapitre 11 Interfaces)
-- __Pascal Bourguignon__ http://www.informatimago.com/ The world will now reboot; don't bother saving your artefacts.
"GG²" <gg@voila.fr> writes:
Bonjour,
Je souhaiterais connaître une méthode pour pouvoir récupérer le flux
d'informations issues d'un programme pour pouvoir le réinjecter dans un
autre.
Je m'explique: un soft en C génére plusieurs fichiers, et un flux texte à
l'écran. Je voudrai récupérer ce flux en "live" (pendant que le programme
continue de tourner) afin de l'envoyer dans une socket, ou pipe, pour une
utilisation directe via un autre programme, le tout en temps réel.
Existe-t-il un moyen de faire cela sous Unix/Linux ?
Comment l'envoit-il à l'écran? Est-ce via un émulateur de terminal
comme xterm ou directement comme une bitmap dans une fenêtre X?
Dans le premier cas, on peut envisager une redirection:
pgm > output
mais il est possible que le programme s'amuse à ouvrir /dev/tty auquel
cas c'est plus difficile de rediriger.
Dans le second cas, en supposant que le programme utilise la primitive
X pour _dessiner_ du texte, on doit pouvoir patcher un serveur X pour
logger les sorties de texte. Mais rien ne le garanti: le programme
peut parfaitement dessiner les lettres pixel par pixel ou utiliser des
jpeg pour afficher des titres, etc...
Conclusion: le mieux c'est de:
1- lire la doc du programme, il y a peut être une option pour
l'utiliser en mode batch et envoyer la sortie dans un fichier
au lieu de l'écran.
2- modifier le source du programme pour en faire un programme
batch au lieu d'un programme GUI de merde. D'ailleurs,
avec un peut de chance, c'est un programme unix construit
à partir d'un "moteur" CLI/batch normal et une couche
GUI disticte: on peut alors utiliser directement le moteur.
Bonne lecture de fond:
The Art of Unix Programming
Eric S. Raymond
http://catb.org/~esr/writings/taoup/html/
(en particulier, chapitre 11 Interfaces)
--
__Pascal Bourguignon__ http://www.informatimago.com/
The world will now reboot; don't bother saving your artefacts.
Je souhaiterais connaître une méthode pour pouvoir récupérer le flux d'informations issues d'un programme pour pouvoir le réinjecter dans un autre. Je m'explique: un soft en C génére plusieurs fichiers, et un flux texte à l'écran. Je voudrai récupérer ce flux en "live" (pendant que le programme continue de tourner) afin de l'envoyer dans une socket, ou pipe, pour une utilisation directe via un autre programme, le tout en temps réel.
Existe-t-il un moyen de faire cela sous Unix/Linux ?
Comment l'envoit-il à l'écran? Est-ce via un émulateur de terminal comme xterm ou directement comme une bitmap dans une fenêtre X?
Dans le premier cas, on peut envisager une redirection:
pgm > output
mais il est possible que le programme s'amuse à ouvrir /dev/tty auquel cas c'est plus difficile de rediriger.
Dans le second cas, en supposant que le programme utilise la primitive X pour _dessiner_ du texte, on doit pouvoir patcher un serveur X pour logger les sorties de texte. Mais rien ne le garanti: le programme peut parfaitement dessiner les lettres pixel par pixel ou utiliser des jpeg pour afficher des titres, etc...
Conclusion: le mieux c'est de:
1- lire la doc du programme, il y a peut être une option pour l'utiliser en mode batch et envoyer la sortie dans un fichier au lieu de l'écran.
2- modifier le source du programme pour en faire un programme batch au lieu d'un programme GUI de merde. D'ailleurs, avec un peut de chance, c'est un programme unix construit à partir d'un "moteur" CLI/batch normal et une couche GUI disticte: on peut alors utiliser directement le moteur.
Bonne lecture de fond:
The Art of Unix Programming Eric S. Raymond http://catb.org/~esr/writings/taoup/html/ (en particulier, chapitre 11 Interfaces)
-- __Pascal Bourguignon__ http://www.informatimago.com/ The world will now reboot; don't bother saving your artefacts.
GG²
Il s'agit d'un simple flux texte. Mais est-il possible d'utiliser ce flux redirigé en temps réel ?
Il s'agit d'un simple flux texte.
Mais est-il possible d'utiliser ce flux redirigé en temps réel ?