Existe una relación estrecha entre C y el sistema operativo que ejecuta los programas de C. El sistema operativo UNIX esta escrito en su mayor parte con C. En este capítulo se verá como C y UNIX interactuán juntos.
Se usa UNIX para manejar el espacio del archivo, para editar, compilar o ejecutar programas, entre otras cosas.
Sin embargo UNIX es mucho más útil que lo anterior.
- Portabilidad Unix o alguna variante de UNIX están disponibles en muchas máquinas. Los programas escritos con UNIX y C estándares deben correr en cualquier máquina prácticamente sin ningún problema.
- Multiusuario/Multitarea Muchos programas pueden compartir la capacidad de procesamiento de las máquinas.
- Manejo de archivos El sistema jerárquico de archivos emplea muchas rutinas de manejo de archivos.
- Programación del Shell UNIX suministra un intérprete de comandos poderoso que entiende mas de 200 comandos y que puede también correr UNIX o programas del usuario.
- Entubamiento o Pipe Permite la conexión entre programas, en donde la salida de un programa puede ser la entrada de otro. Lo anterior puede hacerce desde la línea de comandos o dentro de un programa de C.
- Utilerías de UNIX Hay cerca de 200 utilerías que permiten ejecutar muchas rutinas sin escribir nuevos programas. Por ejemplo: make, grep diff, awk, etc.
- Llamadas al sistema UNIX tiene aproximadamente 60 llamadas al sistema, que son el corazón del sistema operativo o del kernel de UNIX. Las llamadas están actualmente escritas en C. Todas ellas pueden ser accesadas desde programas de C. Ejemplos de estas son el sistema básico de E/S, acceso al reloj del sistema. La función
open() es un ejemplo de una llamada al sistema.
- Biblioteca de funciones Que son adiciones al sistema operativo.
Para usar las bibliotecas de funciones y las llamadas al sistema en un programa de C simplemente se debe llamar la función apropiada de C.
Ejemplos de las funciones de la biblioteca estándar que han sido vistas son las funciones de E/S de alto nivel -fprintf(), malloc(), ...
Operadores aritméticos, generadores de números aleatorios -- random(), srandom(), lrand48(), drand48(), etc. y funciones para conversión de cadenas a los tipos básicos de C (atoi(), atof(), etc.) son miembros de la biblioteca estándar stdlib.h.
Todas las funciones matemáticas como sin(), cos(), sqrt() son funciones de la biblioteca estándar de matemáticas (math.h).
Para muchas llamadas del sistema y funciones de las bibliotecas se tiene que incluir el archivo cabecera apropiado, por ejemplo: stdio.h, math.h.
Para usar una función se debe asegurar de haber puesto los correspondientes #include en el archivo de C. De esta forma la función puede ser llamada correctamente.
Es importante asegurarse que los argumentos tengan los tipos esperados, de otra forma la función probablemente producirá resultados extraños.
Algunas bibliotecas requieren opciones extras antes de que el compilador pueda soportar su uso. Por ejemplo, para compilar un programa que incluya funciones de la biblioteca math.h el comando podría ser de la siguiente forma:
gcc matprog.c -o matprog.c -lm
La opción final -lm es una instrucción para ligar la biblioteca matemática con el programa. La página de man para cada función usualmente informa si se requiere alguna bandera de compilación especial.
Información de casi todas las llamadas al sistema y funciones de biblioteca están disponibles en las páginas del man. Se encuentran disponibles en línea con tan sólo teclear man y el nombre de la función. Por ejemplo:
man drand48
nos dará información acerca de éste generador de números aleatorios. |