En los sistemas operativos modernos compatibles con POSIX , un programa que necesita acceder a los datos de un archivo almacenado en un sistema de archivos utiliza la llamada al sistema read . El archivo se identifica mediante un descriptor de archivo que normalmente se obtiene de una llamada anterior a open . Esta llamada al sistema lee los datos en bytes , cuyo número es especificado por el autor de la llamada, del archivo y los almacena en un búfer proporcionado por el proceso que realiza la llamada.
La llamada al sistema de lectura toma tres argumentos:
La interfaz de llamada al sistema de lectura está estandarizada por la especificación POSIX. Los datos de un archivo se leen llamando a la función de lectura:
ssize_t leer ( int fd , void * buf , size_t count );
El valor devuelto es el número de bytes leídos (cero indica fin de archivo ) y la posición del archivo avanza según este número. No es un error si este número es menor que el número de bytes solicitados; esto puede suceder, por ejemplo, porque hay menos bytes disponibles en este momento (tal vez porque estábamos cerca del fin del archivo, o porque estamos leyendo desde una tubería , o desde una terminal ), o porque la llamada al sistema fue interrumpida por una señal .
Como alternativa, se devuelve -1 cuando ocurre un error; en tal caso, errno se configura adecuadamente y además se deja sin especificar si la posición del archivo (si la hay) cambia.