La System callopen() 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:
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 ejecutar
S_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 ejecutar
S_IRGRP 00040 el grupo tiene permisos para leer.
S_IWGRP 00020 el grupo tiene permisos para escribir
S_IXGRP 00010 el grupo tiene permisos para ejecutar.
S_IRWXO 00007 otros tienen permisos para leer, escribir y ejecutar
S_IROTH 00004 otros tienen permisos para leer
S_IWOTH 00002 otros tienen permisos para escribir.
S_IXOTH 00001 otros tienen permisos para ejecutar
#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);
La System callread() 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.
La System callwrite() escribe hasta una determinada cantidad de bytes desde un buffer que comienza en buf al archivo referenciado por el file descriptor.
#include <unistd.h>int dup(int oldfd);int dup2(int oldfd, int newfd);
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.
dup2() hace lo mismo pero en vez de usar la política de seleccionar el file descriptor más pequeño utiliza e newfd como nuevo file descriptor.
La System callunlink() 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.
La System callstat() devuelve información sobre un Archivo, en el buffer apuntado por statbuf. No se requiere ningún permiso sobre el archivo en cuestión, pero si en los directorios que conforma el path hasta llegar el archivo
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *pathname, struct stat *statbuf);int fstat(int fd, struct stat *statbuf);
Donde la estructura apuntada por statbuf se describe de la siguiente manera:
struct stat { dev_t st_dev; /* ID of device containing file */ ino_t st_ino; /* Inode number */ mode_t st_mode; /* File type and mode */ nlink_t st_nlink; /* Number of hard links */ uid_t st_uid; /* User ID of owner */ gid_t st_gid; /* Group ID of owner */ dev_t st_rdev; /* Device ID (if special file) */ off_t st_size; /* Total size, in bytes */ blksize_t st_blksize; /* Block size for filesystem I/O */ blkcnt_t st_blocks; /* Number of 512B blocks allocated */ /* Since Linux 2.6, the kernel supports nanosecond precision for the following timestamp fields. For the details before Linux 2.6, see NOTES. */ struct timespec st_atim; /* Time of last access */ struct timespec st_mtim; /* Time of last modification */ struct timespec st_ctim; /* Time of last status change */ #define st_atime st_atim.tv_sec /* Backward compatibility */ #define st_mtime st_mtim.tv_sec #define st_ctime st_ctim.tv_sec };
La System callaccess() chequea si un proceso tiene o no los permisos para utilizar el Archivo con un determinado pathname. El argumento mode determina el tipo de permiso a ser chequeado.
#include <unistd.h>int access(const char *pathname, int mode);
El mode especificado el tipo de accesibilidad a ser chequeada, los valores pueden conjugarse como una mascara de bits con el operador |: