CGI en C

7 06 2008

Para los que ya tienen instalado apache y quieren trabajar con CGI es necesario hacer un pequeña pero muy importante modificacion en el archivo apache2.conf.

El archivo apache2.conf se encuentra en /etc/apache2/ y en él debemos agregar lo siguiente :
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

Luego de esto es debemos reiniciar apache :
sudo /etc/init.d/apache2 restart

Ahora ya estamos en condiciones de hacer nuestro hola mundo en CGI.
Creamos un archivo llamado hello.c en el cual escribimos lo siguiente :
int main (){
printf("Content-Type: text/html\n\n");
printf("Hola Mundo\n");
return( 0 );
}

lo compilamos de la siguiente manera :
gcc hello.c .-o hello.cgi

Luego lo copiamos a la carpeta /usr/lib/cgi-bin, es en esta carpeta donde se deben guardar nuestros ejecutables cgi.
sudo cp hello.cgi /usr/lib/cgi-bin
le damos permisos de ejecucion
cd /usr/lib/cgi-bin
sudo chmod 755 hello.cgi

ya con esto tenemos listo nuestra prueba.
En estos momentos se deben cruzar los dedos y tener mucha fé, luego con mucho cuidado ir al navegador y poner :
localhost/cgi-bin/hello.cgi

y magicamente y como nadie se lo esperaba nos aparecerá un granadisimo “hola mundo” 😀





Ejecutar comando de shell desde C

30 01 2008

Hay ocaciones en que ejecutar un comando nativo del sistema, o mejor dicho un comando reconocido por nuestra shell, nos facilita mucho la vida….

Bueno, no para todos es tan obvio como hacer esto, asi que aca voy a dejar registrado como realizar esta sencilla operacion 😉

El formato es simple 😀
system("comando que quieras");

Aqui dejo un sencillisimo ejemplo, primero creamos un archivo llamado myls.c y dentro de él ponemos el siguiente codigo:

#include<stdio.h>
int main(){
system("ls -l");
return 0;
}

Al copiar y pegar el codigo va a tener un problemas con las comillas, asi que las tienen que poner denuevo 😀

Para compilar hacemos lo siguiente:
gcc myls.c -o myls

y finalmente para ejecutarlo, hacemos lo siguiente :

./myls

Al ejecutar este programa , será lo mismo que ejecutar en la consola el comando “ls -l” ( sin comillas).

Saludos