Curso Básico de UNIX
UNIX y C
El sistema operativo UNIX suele venir acompañado de un compilador
para lenguaje C. Escribiendo programas en lenguaje C es posible crear comandos
indistinguibles de los propios de UNIX. Como ejemplo, puede crearse el
siguiente archivo, usando un editor de texto sencillo como el ae,
o el comando cat si se tiene fé en la propia digitación.
Contenido del archivo hola.c:
/* hola.c: programa de saludo */
#include <stdio.h>
main()
{
printf("Hola, mundo\n");
}
Compilar el contenido de este archivo con el comando
cc hola.c -o hola
Esto crea el archivo de salida hola, ejecutable en UNIX mediante
el comando
./hola
Imprime, como es de suponer, la frase "Hola mundo".
Un ejemplo más interesante, con uso de llamadas a la biblioteca
del sistema, es el ejemplo siguiente, una versión muy mínima
del comando cat, que llamaremos cati.
Contenido del archivo cati.c:
/* cati: cat versión mínima */
# define LARGO 1024 /* define valor de variable LARGO
*/
main()
{
char bufer[LARGO]; /* declara un arreglo de caracteres
*/
int n;
/* para contar caracteres leídos */
/* llamada al sistema para leer caracteres desde la entrada
estándar (0), hacia el arreglo
bufer, en cantidad igual al
tamaño del arreglo bufer
*/
n = read(0, bufer, sizeof bufer);
/* primera lectura */
/* repite mientras haya caracteres leídos, es decir,
n>0 */
while (n > 0)
{
/* llamada al sistema para escribir caracteres
en salida
estándar (1), en cantidad
n, extrayendo desde arreglo
bufer
*/
write(1, bufer, n);
n = read(0, bufer, sizeof bufer);
/* siguientes lecturas */
}
exit(0); /* sale devolviendo
c¢digo de retorno 0 */
}
Los extensos comentarios explican el funcionamiento. Compilar este programa
con el comando
cc cati.c -o cati
Esto crea el archivo de salida cati, ejecutable en UNIX. El comando
./cati <hola.c
muestra el contenido del programa hola.c. Esta versión mínima
sólo funciona redireccionando la entrada estándar. Puede
probarse su funcionamiento ingresando datos desde el teclado, finalizando
con Ctrl-D. El programa puede interrumpirse con Ctrl-C. ¿Qué
diferencia hay?
Es un problema de programación algo más complejo asimilar
un nombre de archivo como parámetro y hacer que el programa despliegue
el contenido de este archivo.
La razón por la que estos programa se invocan como ./hola
y no simplemente hola es que el directorio actual no está
habitualmente en la vía de búsqueda de ejecutables
(variable PATH). Colocando las versiones ejecutables de los programas hola
o cati en un directorio como /bin los haría ejecutables
directamente como cualquier comando de UNIX.
Estos ejemplos muestran la versatilidad de UNIX como sistema operativo:
puede uno ampliarlo con comandos construídos por uno mismo que se
integran perfectamente a los comandos propios del sistema. En las distribuciones
de UNIX de dominio público suelen venir los fuentes en C de todos
los comandos, lo cual permite, al usuario con conocimento suficiente, modificar
o corregir estos programas.
Víctor A. González Barbone vagonbar en fing edu uy
Instituto de Ingeniería Eléctrica
- Facultad de Ingeniería - Montevideo,
Uruguay.