Faire croire à une application qu'elle est dans un tty.
5 réponses
Matthieu Moy
Bonjour,
J'ai un programme dont le comportement diffère entre un execution
classique :
./mon_prg
et une execution redirigée vers un fichier :
./mon_prg > mon_fichier.txt
Ou même vers un autre programme, comme
./mon_prg | cat
En fait, le programme est multithreadé, et étrangement, il y a un
thread qui bufferise completement ses "printf" et pas l'autre, ce qui
fait que dans la sortie redirigée vers le fichier, les lignes sont
entrelacées completement n'importe comment. (Ca commence par la fin,
et ça termine par le début !!)
Je cherche un moyen de faire croire au programme qu'il s'execute dans
un tty, pour qu'il bufferise moins, quitte à perdre un peu en
performances. Un truc qui « trompe » isatty, quoi ... Je crois me
souvenir qu'il y a un truc, mais lequel ?
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
Jean-Marc Bourguet
Matthieu Moy writes:
Je cherche un moyen de faire croire au programme qu'il s'execute dans un tty, pour qu'il bufferise moins, quitte à perdre un peu en performances. Un truc qui « trompe » isatty, quoi ... Je crois me souvenir qu'il y a un truc, mais lequel ?
Dans l'ordre de complexite et de disponibilite:
* script * expect * se faire qqch autour des pseudo-terms qui fait ce qu'on veut
A+
-- Jean-Marc Site de usenet-fr: http://www.usenet-fr.news.eu.org
Je cherche un moyen de faire croire au programme qu'il s'execute dans
un tty, pour qu'il bufferise moins, quitte à perdre un peu en
performances. Un truc qui « trompe » isatty, quoi ... Je crois me
souvenir qu'il y a un truc, mais lequel ?
Dans l'ordre de complexite et de disponibilite:
* script
* expect
* se faire qqch autour des pseudo-terms qui fait ce qu'on veut
A+
--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Je cherche un moyen de faire croire au programme qu'il s'execute dans un tty, pour qu'il bufferise moins, quitte à perdre un peu en performances. Un truc qui « trompe » isatty, quoi ... Je crois me souvenir qu'il y a un truc, mais lequel ?
Dans l'ordre de complexite et de disponibilite:
* script * expect * se faire qqch autour des pseudo-terms qui fait ce qu'on veut
A+
-- Jean-Marc Site de usenet-fr: http://www.usenet-fr.news.eu.org
DINH Viêt Hoà
En fait, le programme est multithreadé, et étrangement, il y a un thread qui bufferise completement ses "printf" et pas l'autre, ce qui fait que dans la sortie redirigée vers le fichier, les lignes sont entrelacées completement n'importe comment. (Ca commence par la fin, et ça termine par le début !!)
Je cherche un moyen de faire croire au programme qu'il s'execute dans un tty, pour qu'il bufferise moins, quitte à perdre un peu en performances. Un truc qui « trompe » isatty, quoi ... Je crois me souvenir qu'il y a un truc, mais lequel ?
c'est sans doute une fausse résolution de ton problème. Connais-tu l'appel fflush() ? qui permet d'écrire dans le flux de sortie ce qui se trouve dans le buffer.
En fait, le programme est multithreadé, et étrangement, il y a un
thread qui bufferise completement ses "printf" et pas l'autre, ce qui
fait que dans la sortie redirigée vers le fichier, les lignes sont
entrelacées completement n'importe comment. (Ca commence par la fin,
et ça termine par le début !!)
Je cherche un moyen de faire croire au programme qu'il s'execute dans
un tty, pour qu'il bufferise moins, quitte à perdre un peu en
performances. Un truc qui « trompe » isatty, quoi ... Je crois me
souvenir qu'il y a un truc, mais lequel ?
c'est sans doute une fausse résolution de ton problème.
Connais-tu l'appel fflush() ?
qui permet d'écrire dans le flux de sortie ce qui se trouve dans le
buffer.
En fait, le programme est multithreadé, et étrangement, il y a un thread qui bufferise completement ses "printf" et pas l'autre, ce qui fait que dans la sortie redirigée vers le fichier, les lignes sont entrelacées completement n'importe comment. (Ca commence par la fin, et ça termine par le début !!)
Je cherche un moyen de faire croire au programme qu'il s'execute dans un tty, pour qu'il bufferise moins, quitte à perdre un peu en performances. Un truc qui « trompe » isatty, quoi ... Je crois me souvenir qu'il y a un truc, mais lequel ?
c'est sans doute une fausse résolution de ton problème. Connais-tu l'appel fflush() ? qui permet d'écrire dans le flux de sortie ce qui se trouve dans le buffer.
c'est sans doute une fausse résolution de ton problème. Connais-tu l'appel fflush() ? qui permet d'écrire dans le flux de sortie ce qui se trouve dans le buffer.
Voui, voui, je connais.
Tu marques un point parce que c'est effectivement une solution propre au problème.
Seulement, voilà, un coup c'est un vrai printf (écrit par un mec qui a pas envie de changer son code), un coup c'est un printf cross-compilé sur un simulateur d'instruction qui réappelle un autre printf, et là, on ne sait même plus ou mettre le flush.
La solution "script" est crade, mais elle marche et elle plait à l'utilisateur ;-)
Merce de vos réponses dans tous les cas.
-- Matthieu
DINH Viêt Hoà <dinh.viet.hoa@free.fr> writes:
c'est sans doute une fausse résolution de ton problème.
Connais-tu l'appel fflush() ?
qui permet d'écrire dans le flux de sortie ce qui se trouve dans le
buffer.
Voui, voui, je connais.
Tu marques un point parce que c'est effectivement une solution propre
au problème.
Seulement, voilà, un coup c'est un vrai printf (écrit par un mec qui a
pas envie de changer son code), un coup c'est un printf cross-compilé
sur un simulateur d'instruction qui réappelle un autre printf, et là,
on ne sait même plus ou mettre le flush.
La solution "script" est crade, mais elle marche et elle plait à
l'utilisateur ;-)
c'est sans doute une fausse résolution de ton problème. Connais-tu l'appel fflush() ? qui permet d'écrire dans le flux de sortie ce qui se trouve dans le buffer.
Voui, voui, je connais.
Tu marques un point parce que c'est effectivement une solution propre au problème.
Seulement, voilà, un coup c'est un vrai printf (écrit par un mec qui a pas envie de changer son code), un coup c'est un printf cross-compilé sur un simulateur d'instruction qui réappelle un autre printf, et là, on ne sait même plus ou mettre le flush.
La solution "script" est crade, mais elle marche et elle plait à l'utilisateur ;-)
Merce de vos réponses dans tous les cas.
-- Matthieu
JustMe
Matthieu Moy wrote:
DINH Viêt Hoà writes:
c'est sans doute une fausse résolution de ton problème. Connais-tu l'appel fflush() ? qui permet d'écrire dans le flux de sortie ce qui se trouve dans le buffer.
Voui, voui, je connais.
Tu marques un point parce que c'est effectivement une solution propre au problème.
Seulement, voilà, un coup c'est un vrai printf (écrit par un mec qui a pas envie de changer son code), un coup c'est un printf cross-compilé sur un simulateur d'instruction qui réappelle un autre printf, et là, on ne sait même plus ou mettre le flush.
tu peux aussi mettre au debut du code un buffer stdout tres petit. ca evite de changer tt le code.
man setbuf ;-)
La solution "script" est crade, mais elle marche et elle plait à l'utilisateur ;-)
Merce de vos réponses dans tous les cas.
Matthieu Moy wrote:
DINH Viêt Hoà <dinh.viet.hoa@free.fr> writes:
c'est sans doute une fausse résolution de ton problème.
Connais-tu l'appel fflush() ?
qui permet d'écrire dans le flux de sortie ce qui se trouve dans le
buffer.
Voui, voui, je connais.
Tu marques un point parce que c'est effectivement une solution propre
au problème.
Seulement, voilà, un coup c'est un vrai printf (écrit par un mec qui a
pas envie de changer son code), un coup c'est un printf cross-compilé
sur un simulateur d'instruction qui réappelle un autre printf, et là,
on ne sait même plus ou mettre le flush.
tu peux aussi mettre au debut du code un buffer stdout tres petit. ca
evite de changer tt le code.
man setbuf ;-)
La solution "script" est crade, mais elle marche et elle plait à
l'utilisateur ;-)
c'est sans doute une fausse résolution de ton problème. Connais-tu l'appel fflush() ? qui permet d'écrire dans le flux de sortie ce qui se trouve dans le buffer.
Voui, voui, je connais.
Tu marques un point parce que c'est effectivement une solution propre au problème.
Seulement, voilà, un coup c'est un vrai printf (écrit par un mec qui a pas envie de changer son code), un coup c'est un printf cross-compilé sur un simulateur d'instruction qui réappelle un autre printf, et là, on ne sait même plus ou mettre le flush.
tu peux aussi mettre au debut du code un buffer stdout tres petit. ca evite de changer tt le code.
man setbuf ;-)
La solution "script" est crade, mais elle marche et elle plait à l'utilisateur ;-)
Merce de vos réponses dans tous les cas.
Eclice
Bonjour Jean-Marc,
* se faire qqch autour des pseudo-terms qui fait ce qu'on veut
Je suis un peu parti à la recherche d'infos là-dessus. Je serais très intéressé par programmer qq. chose autour de ces pseudo-ttys (je désirerais piloter un logiciel qui tourne avec la librarie ncurses). Malheureusement, pas trop d'infos du côté de Google (ou alors mots clefs mal précisés). Pourriez-vous m'indiquer une source?
Merci par avance,
Cordialement,
Eclice. -- Ce message a été posté via la plateforme Web club-Internet.fr This message has been posted by the Web platform club-Internet.fr
http://forums.club-internet.fr/
Bonjour Jean-Marc,
* se faire qqch autour des pseudo-terms qui fait ce qu'on veut
Je suis un peu parti à la recherche d'infos là-dessus. Je serais très
intéressé par programmer qq. chose autour de ces pseudo-ttys (je désirerais
piloter un logiciel qui tourne avec la librarie ncurses).
Malheureusement, pas trop d'infos du côté de Google (ou alors mots clefs
mal précisés).
Pourriez-vous m'indiquer une source?
Merci par avance,
Cordialement,
Eclice.
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr
* se faire qqch autour des pseudo-terms qui fait ce qu'on veut
Je suis un peu parti à la recherche d'infos là-dessus. Je serais très intéressé par programmer qq. chose autour de ces pseudo-ttys (je désirerais piloter un logiciel qui tourne avec la librarie ncurses). Malheureusement, pas trop d'infos du côté de Google (ou alors mots clefs mal précisés). Pourriez-vous m'indiquer une source?
Merci par avance,
Cordialement,
Eclice. -- Ce message a été posté via la plateforme Web club-Internet.fr This message has been posted by the Web platform club-Internet.fr