Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: class_OpenGL en 23 Octubre 2017, 23:58 pm



Título: (Consulta/GAS) Obtener puntero stdout para hacer flush solo a él
Publicado por: class_OpenGL en 23 Octubre 2017, 23:58 pm
Hola, muy buenas. Quería saber si hay manera de obtener el stdout de C (FILE *) en ensamblador. Lo necesito para hacer flush a este, sin tener que hacerlo con los demás manejadores. Muchas gracias!


Título: Re: (Consulta/GAS) Obtener puntero stdout para hacer flush solo a él
Publicado por: Eternal Idol en 24 Octubre 2017, 08:09 am
En POSIX stdout es 1.


Título: Re: (Consulta/GAS) Obtener puntero stdout para hacer flush solo a él
Publicado por: class_OpenGL en 24 Octubre 2017, 08:32 am
Probé a pasarle 1 a fflush, pero el programa 'petó'


Título: Re: (Consulta/GAS) Obtener puntero stdout para hacer flush solo a él
Publicado por: Eternal Idol en 24 Octubre 2017, 08:38 am
¿Que S.O. estas usando?


Título: Re: (Consulta/GAS) Obtener puntero stdout para hacer flush solo a él
Publicado por: class_OpenGL en 24 Octubre 2017, 12:54 pm
Estoy usando linux, aunque busco una solución estándar C. Quizás una función que retorne el puntero stdout.


Título: Re: (Consulta/GAS) Obtener puntero stdout para hacer flush solo a él
Publicado por: Eternal Idol en 24 Octubre 2017, 13:26 pm
stdout es 1 asi que estaras haciendo algo mal.

http://man7.org/linux/man-pages/man3/stdin.3.html

Citar
On program startup, the integer file descriptors associated with the streams stdin, stdout, and stderr are 0, 1, and 2, respectively.

Solo tenes que pasar el parametro stream con un valor de 1 (eso depende de la plataforma, 32 o 64 bits por ejemplo) y llamar a fflush. De ultima pasale 0 y listo.

Citar
If the stream argument is NULL, fflush() flushes all open output streams.

http://man7.org/linux/man-pages/man3/fflush.3.html