Ejecutar código C en memoria

Esta entrada va dedicada a los “muy frikis” del lenguaje C.

El compilador de C gcc es bastante rápido compilando programas pequeños, ¿se podrían hacer shell scripts en C? Es decir, tener un pequeño código en C y ejecutarlo directamente al igual que se hace en los lenguajes interpretados.

El script que os propongo es el siguiente:

#!/bin/bash

gcc -O -pipe $1 -o /var/run/shm/ejecutar.e -lm
shift
/var/run/shm/ejecutar.e "$@"
rm /var/run/shm/ejecutar.e

Lo salvamos con el nombre “ejecutar.sh” y le damos permisos de ejecución con:

chmod +x ejecutar.sh

¿Cómo funciona? Si tenemos un código en C llamado “miprograma.c” en un terminal habría que ejecutar:

ejecutar.sh miprograma.c

El programa se compilará en memoria y se ejecutará.

Realmente lo que hace el script es compilar el programa en la memoria, sin pasar por el disco duro, y ejecutarlo desde allí. Esto es algo que hacen lenguajes como Java cuando usan el JIT . Lenguajes como Java disponen de un JIT, que es básicamente un pequeño compilador que traduce el código interpretado a código compilado con la correspondiente ganacia de velocidad. El problema que tienen los JIT es que se gastan tiempo y recursos en compilar el programa cada vez que lo ejecutes.

Anuncios
Esta entrada fue publicada en Software. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s