Sistemas operativos modernos

Llamada al sistema Descripción fd = creat(name, moda) Una forma de crear un nuevo archivo fd = open(flle, how,...) Abre un archivo para leer, escribir o ambas cosas s = close(fd) Cierra un archivo abierto n = read(fd, buffer, nbytes) Leer datos de un archivo a un búfer n = write(fd, buffer, nbytes) Escribe datos de un búfer a un archivo position = lseek(fd, offset, whence) Mueve el apuntador de archivo s = stat(name, &buf) Obtiene información de estado de un archivo s = fstat(fd, &buf) Obtiene información de estado de un archivo s = pipe(&fd(0]) Crea una canalización s = fcntl(fd, cmd, ...) Bloqueos y otras operaciones de archivos Figura 10-28. Algunas llamadas al sistema relacionadas con archivos. El código de retorno s es si ha habido un error; fd es un descriptor de archivo y position es un desplazamiento de archivo. Los parámetros no requieren mayor explicación. (que indica cuántos bytes deben transferirse). Eso es lodo. Es un diseño muy sencillo. Una lla­ mada típica es: n=read(fd, buffer, nbytes): Aunque la mayoría de los programas lee y escribe archivos de forma secuencial, algunos programas necesitan acceso aleatorio a cualquier parte de un archivo. Cada archivo tiene aso­ ciado un apuntador que indica la posición actual dentro del archivo. Al leer (escribir) de mane­ ra secuencial, el apuntador por lo regular apunta al siguiente byte que se leerá (escribirá). Si el apuntador está en, digamos, 4096, antes de que se lean 1024 bytes, se moverá en forma auto­ mática a 5120 después de una llamada read exitosa. La llamada Iseek modifica el valor del apuntador de posición, de modo que llamadas read o write subsiguientes pueden principiar en cualquier punto del archivo e incluso más allá de su final. Se usó el nombre Iseek para que no hubiera conflicto con seek, una llamada obsoleta que antes se usaba para búsquedas en compu­ tadoras de 16 bits. Lseek tiene tres parámetros: el primero es el descriptor del archivo; el segundo, offset, es una posición en el archivo; el tercero indica si dicha posición es relativa al principio del archi­ vo, a la posición actual o al final del archivo. El valor devuelto por Iseek es la posición absolu­ ta en el archivo después de que el apuntador del archivo se modifica. Algo un tanto irónico es que Iseek es la única llamada al sistema de archivos que nunca puede causar un desplazamien­ to real del brazo del disco (para lo cual en inglés se usa el término “seek”), porque lo único que hace es actualizar la posición actual en el archivo, que es un número en la memoria. Para cada archivo, UNIX se mantiene al tanto del modo del archivo (normal, directorio o archivo especial), su tamaño, la hora de la última modificación y otra información. Los progra­ mas pueden solicitar esta información con la llamada al sistema Stat. El primer parámetro es el nombre del archivo; el segundo es un apuntador a una estructura donde se coloca la infor-

RkJQdWJsaXNoZXIy MjI4NDcx