¿Hacer que gcc compile a stdout?

elkaoD

Pues eso, ¿Hay alguna forma de que GCC no compile a un archivo sino que saque los datos binarios a stdout?

r2d2rigo

Pues se me ocurren dos soluciones:

1- Arrancar un programa paralelo que, por ejemplo, si sabes que el output sera ./main, lo abra antes y lo pipee a lo que tu quieres (el CGI que hablabamos).
2- Recompilar el gcc y añadirle esa opcion, aunque dudo que a estas alturas este sin implementar vamos :P

PD: hay un comando de bash para redirigir stdout y stderr al tiempo -> gcc test.c >& errors (en lugar de 1> o 2>)

Y

no uses la opción -o para la salida a un fichero.

r2d2rigo

#3, -o solo sirve para cambiar el nombre del fichero de output. Si no lo especificas, el nombre del ejecutable generado es a.out.

elkaoD

Exacto, yo quiero que ese a.out en lugar de salir como fichero salga por stdout. Creo que la pregunta es tan rara que no puede ni hacerse xD

r2d2rigo

elkaoD, creo que esto es lo que te interesa (sacado de http://tldp.org/LDP/abs/html/io-redirection.html):

i>&j

Redirects file descriptor i to j.

All output of file pointed to by i gets sent to file pointed to by j.

elkaoD

GCC no abre un descriptor de fichero cuando genera la salida. gcc -o &1 en bash toma & como fin de la instrucción. Ya lo había probado xD

Gracias por buscar igualmente, seguiré buscando yo también :)

EDIT: Me siento tupi... /dev/stdout !!!

Y

correcto, error por mi parte, simplemente le saqué la lógica como cualquier otro programa se hubiera tratado.

Gcc siempre crea fichero, mea culpa xD

Usuarios habituales