Definición
Las system calls de archivos pueden dividirse en dos clases:
- Las que operan sobre los archivos
- Las que operan sobre los metadatos de los archivos
Open()
Definición
La System call
open()
convierte el nombre de un Archivo en una entrada de la tabla de descriptores de archivos, y devuelve dicho valor. Siempre devuelve el descriptor más pequeño que no está abierto.Las flags, estos flags pueden combinarse:
Link to original
O_RDONLY
: modo solo lectura.O_WRONLY
: modo solo escritura.O_RDWR
: modo lectura y escritura.O_APPEND
: el archivo se abre en modo lectura y el offset se setear al final, de forma tal que este pueda agregar al final.O_CREATE
: si el archivo no existe se crea con los permisos seteados en el parámetro mode:
S_IRWXU 00700
user (file owner) el usuario tiene permisos par leer, escribir y ejecutarS_IRUSR 00400
el usuario tiene permisos para leer.S_IWUSR 00200
el usuario tiene permisos para escribir.S_IXUSR 00100
el usuario tiene permisos para ejecutar.S_IRWXG 00070
el grupo tiene permisos para leer, escribir y ejecutarS_IRGRP 00040
el grupo tiene permisos para leer.S_IWGRP 00020
el grupo tiene permisos para escribirS_IXGRP 00010
el grupo tiene permisos para ejecutar.S_IRWXO 00007
otros tienen permisos para leer, escribir y ejecutarS_IROTH 00004
otros tienen permisos para leerS_IWOTH 00002
otros tienen permisos para escribir.S_IXOTH 00001
otros tienen permisos para ejecutar
Creat()
Definición
La System call
Link to originalcreat()
equivale a llamar aopen()
con los flagsO_CREAT | O_WRONGLY | O_TRUNC
Close()
Definición
La System call
close()
cierra un file descriptor. Si este ya está cerrado devuelve un error.Devuelve
Link to originalsi salió bien, y si hubo un error.
Read()
Definición
La System call
read()
se utiliza para hacer intentos de lecturas hasta un número dado de bytes de un archivo. La lectura comienza en la posición señalada por el file descriptor, y tras ella se incrementa ésta en el número de bytes leídos.Devuelve el número de bytes leídos si salió bien,
Link to originalsi encuentra el End Of File (EOF) y si hubo un error.
Write()
Definición
La System call
Link to originalwrite()
escribe hasta una determinada cantidad de bytes desde un buffer que comienza enbuf
al archivo referenciado por el file descriptor.
Lseek()
Definición
La System call
lseek()
reposiciona el desplazamiento (offset
) de un Archivo abierto con el file descriptorfd
de acuerdo con el parámetrowhence
:Link to original
SEEK_SET
: el desplazamientoSEEK_CUR
: el desplazamiento es sumado a la posición actual del archivoSEEK_END
: el desplazamiento se suma a partir del final del archivo
Dup()
Definición
La System call
dup()
crea una copia del file descriptor del Archivo cuyo nombre esoldfld
Después de que retorna en forma exitosa, el viejo y nuevo file descriptor pueden ser usados de forma intercambiable. Estos se refieren al mismo archivo abierto y por ende comparten el offset y los flags de estado.
Link to original
dup2()
hace lo mismo pero en vez de usar la política de seleccionar el file descriptor más pequeño utiliza enewfd
como nuevo file descriptor.
Link()
Definición
La System call
Link to originallink()
crea un nuevo nombre para un Archivo. Esto también se conoce como un link (hard link)
Unlink()
Definición
La System call
Link to originalunlink()
elimina un nombre de un Archivo del sistema de archivos. Si además ese nombre era el último nombre o link del archivo y no hay nadie que tenga el archivo abierto, lo borra completamente del sistema de archivos.
Mkdir()
Definición
La System call
Link to originalmkdir()
Rmdir()
Definición
La System call
Link to originalrmdir()
Chdir()
Definición
La System call
Link to originalchdir()
Opendir()
Definición
La System call
Link to originalopendir()
abre y devuelve un stream que corresponde al Directorio que se está leyendo endirname
. El stream es de tipoDir *
.
Closedir()
Definición
La System call
Link to originalclosedir()
cierra el stream de tipoDIR *
cuyo nombre esdirstream
Stat()
Definición
La System call
stat()
devuelve información sobre un Archivo, en el buffer apuntado porstatbuf
. No se requiere ningún permiso sobre el archivo en cuestión, pero si en los directorios que conforma el path hasta llegar el archivoDonde la estructura apuntada por
Link to originalstatbuf
se describe de la siguiente manera:
Access()
Definición
La System call
access()
chequea si un proceso tiene o no los permisos para utilizar el Archivo con un determinadopathname
. El argumentomode
determina el tipo de permiso a ser chequeado.El
mode
especificado el tipo de accesibilidad a ser chequeada, los valores pueden conjugarse como una mascara de bits con el operador|
:Link to original
F_OK
: el archivo existeR_OK
: el archivo puede ser leídoW_OK
: el archivo puede ser escritoX_OK
: el archivo puede ser ejecutado
Chmod()
Definición
La System call
chmod()
cambia los bits de modos de acceso
S_IRUSR (00400)
read by ownerS_IWUSR (00200)
write by ownerS_IXUSR (00100)
execute/search by owner (“search” applies for directories, and means that entries within the directory can be accessed)S_IRGRP (00040)
read by groupS_IWGRP (00020)
write by groupS_IXGRP (00010)
execute/search by groupS_IROTH (00004)
read by othersS_IWOTH (00002)
write by othersS_IXOTH (00001)
execute/search by othersLa única diferencia entre ambas system calls es la forma en que se accede al Archivo en cuestión
Link to original
Chown()
Definición
La System call
Link to originalchown()
cambia el id del propietario del Archivo y el grupo de un archivo
Umask()
Definición
La System call
Link to originalumask()
setea la máscara con el modo de permisos para la creación de archivos. La máscara por defecto es la