Llamadas al sistema


Llamadas al sistema

El sistema operativo UNIX ofrece un conjunto de llamadas al sistema, en forma de funciones en C, que sirven de interfaz con los servicios provistos por el núcleo. En los siguientes apartados describiremos algunas de estas funciones, en concreto aquéllas que consideramos de uso más frecuente en esta asignatura.

Este texto no ha de considerarse un manual de programación, sino una simple guía. Lo que viene a continuación es poco más que un catálogo de funciones con algunos ejemplos de uso, pero no es sustituto de un buen manual de programación en C bajo UNIX, cuya lectura les recomendamos encarecidamente.

Interfaz de uso

Las llamadas al sistema en UNIX suelen acogerse a este prototipo:

int función ( arg1, arg2, ... );

Todas las llamadas al sistema son funciones C que retornan un entero. Habitualmente un valor negativo (especialmente un -1) indica algún tipo de error. Estas funciones siempre van en minúsculas y hay una tendencia a la parquedad en los nombres (suelen ser cortos). El número de argumentos aceptado en una llamada al sistema UNIX no suele ir más allá de tres.

Códigos de error

En general, las llamadas al sistema del UNIX devuelven un valor convencional en caso de error (casi siempre un -1). Esta información no basta casi nunca para explicar el cariz de la anomalía producida. Por suerte, todo programa puede acceder a una variable entera llamada errno, donde se deposita un código de error cada vez que sucede algo incorrecto.

Para acceder a errno han de incluir el fichero <errno.h>, que también define constantes simbólicas para los códigos de error. Por ejemplo, ENOMEM significa memoria insuficiente, EPERM es para "tipo de acceso denegado" (como cuando queremos abrir en modo escritura un fichero para el que no tenemos permiso de escritura), etc., etc.

En los manuales encontrarán el listado completo de los códigos de error, muchos de los cuales casi nunca se les manifestarán, por fortuna para ustedes.