miércoles, febrero 04, 2009

Primera compilación MINIX

Jeje, esto del MINIX es un pequeño vicio. Es bastante sencillo pero potente a la vez.

Vamos a probar el compilador C:

Iniciamos MINIX e iniciamos sesión como root.

Ahora a buscar el compilador. Vemos que gcc no está. Probamos cc y ¡BINGO!

Probamos el primer programa obligado editando con el VI el fichero prueba.c

Aviso: En lugar de los símbolos de mayor y menor pongo asteriscos para no confundir el HTML.

#include *stdio.h*
main()
{
printf("Hola mundo");
}

Compilamos...
#cc prueba.c
En este punto el compilador nos avisa que estamos utilizado una sintaxis antigua en la función main. Se solucionaría con main(void) si es que nos molesta el warning.

Y ejecutamos:  #./a.out
Para que diga: Hola mundo.

Muy bien, la cosa pinta bien, pero, y ¿las llamadas al sistema?

Utilicemos la fork. Recordad (lo decía ayer), que la fork sirve para crear un proceso hijo.

Nota: En lugar del símbolo menor he utilizado *menor*, y en lugar del símbolo mayor: *mayor*

void main(void)
{
   int retorno_fork;
   printf("El proceso %d va a crear un proceso hijo", getpid());
   retorno_fork = fork();
   if (retorno_fork () *menor* 0)
      {
      printf("No se ha podido crear el proceso");
      exit(-1);
      }
   printf("Esto lo ejecutan tanto el proceso padre como el hijo");
   if (retorno_fork *mayor* 0)
      {
      printf("Soy el proceso padre y he creado el proceso hijo numero %d", retorno_fork);
      }
   else
      {
      printf("Soy el proceso hijo. Me voy a dormir");
      }
}

Como se ve en el propio código, si la fork devuelve un número negativo algo ha fallado y no se ha creado el proceso hijo.

Luego viene la parte que la ejecutan tanto el padre como el hijo (es lo que está después del fork).

Por último, montamos otra bifurcación. Sabemos que al proceso padre la fork le ha devuelto un número mayor que 0 y que es el pid del proceso hijo. Al proceso hijo la fork le devuelve un 0.

Saludos.

2 comentarios:

Anónimo dijo...

hola muy bueno todo una pregunta trato de compilar un programa en minix utilizando cc o gcc y me indica que el comando cc o gcc "not found" sabes como solucionarlo

Anónimo dijo...

Utiliza el comando c .. con eso si te va a salir