Provided by:
manpages-es_1.55-10_all 
NOMBRE
mknod - crea un fichero especial o un fichero regular
SINOPSIS
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int mknod(const char *pathname, mode_t mode, dev_t dev);
DESCRIPCI'ON
mknod intenta crear en el sistema de ficheros un nodo-i (fichero,
fichero especial de dispositivo o tuberia nombrada (FIFO)) llamado
pathname, especificado por mode y dev. mode especifica tanto los
permisos de uso como el tipo de nodo-i a crear. Debe ser una
combinacion (mediante un O-logico) de uno de los tipos de ficheros
enumerados a continuacion y de los permisos para el nuevo nodo-i. Los
permisos son modificados por la mascara umask en la forma usual: los
permisos del nodo-i creado son (mode & ~umask).
El tipo de fichero debe ser uno de los siguientes: S_IFREG, S_IFCHR,
S_IFBLK y S_IFIFO para especificar un fichero normal (que sera creado
vacio), un fichero especial de caracteres, un fichero especial de
bloques o FIFO (tuberia con nombre), respectivamente, o cero, lo que
creara un fichero normal.
Si el tipo de fichero es S_IFCHR o S_IFBLK entonces dev especifica los
numeros mayor y menor del fichero especial de dispositivo creado; en
caso contrario, es ignorado.
Si pathname ya existe, o es un enlace simbolico, esta llamada fallara
devolviendo el error EEXIST.
El identificador efectivo de usuario del proceso indica el propietario
del nuevo nodo-i. Si el directorio que contiene al nodo-i tiene activo
el bit de SETGID (fijar identifcador de grupo) o si el sistema de
ficheros es montado con la semantica de grupos de BSD, el nuevo nodo
heredara la pertenencia al grupo al que pertenezca su directorio padre;
en caso contrario, pertenecera al grupo indicado por el identificador
efectivo de grupo del proceso.
VALOR DEVUELTO
mknod devuelve cero si ha funcionado correctamente, -1 si ha ocurrido
un error (en cuyo caso se asigna a errno un valor apropiado).
ERRORES
EPERM mode solicita la creacion de algo distinto a una tuberia con
nombre (FIFO), y el invocador no es el superusuario; este error
tambien se devuelve si el sistema de ficheros que contiene
pathname no soporta el tipo de nodo-i solicitado.
EINVAL mode solicita la creacion de algo diferente a un fichero normal,
un fichero especial de dispositivo o una FIFO.
EEXIST pathname ya existe.
EFAULT pathname apunta fuera de su espacio de direcciones permitido.
EACCES El proceso no tiene permiso de escritura en el directorio padre
o no tiene permiso de busqueda (ejecucion) en uno de los
directorios incluidos en pathname.
ENAMETOOLONG
pathname es demasiado largo.
ENOENT Un directorio componente de pathname no existe o es un enlace
simbolico descolgado.
ENOTDIR
Un componente utilizado como directorio en pathname no es, de
hecho, un directorio.
ENOMEM No hay suficiente memoria disponible en el nucleo.
EROFS pathname indica un fichero en un sistema de ficheros de
solo-lectura.
ELOOP Se han encontrado demasiados enlaces simbolicos al resolver
pathname.
ENOSPC El dispositivo que contiene pathname no tiene espacio para el
nuevo nodo-i.
CONFORME A
SVr4 (pero la llamada requiere privilegios y por esto no es POSIX),
4.4BSD. La version Linux difiere de la SVr4 en que no requiere permisos
de superusuario para crear tuberias, y tambien en que los errores
EMULTIHOP, ENOLINK, o EINTR no estan documentados.
OBSERVACIONES
POSIX 1003.1-2001 dice: "El unico uso portable de mknod() es para crear
un fichero especial de tipo FIFO. Si mode es distinto de S_IFIFO o dev
es distinto de 0, el comportamiento de mknod() es indefinido."
Bajo Linux, esta llamada no puede usarse para crear ficheros de tipo
directorio o de tipo conector, y no puede ser utilizada por otro
usuario que no sea el superusuario para crear ficheros normales. Para
crear directorios use mkdir, y para crear FIFOs use mkfifo.
Existen numerosas pegas en el protocolo por debajo de NFS. Algunas de
estas afectan a mknod.
V'EASE TAMBI'EN
close(2), fcntl(2), mkdir(2), mount(2), open(2), read(2), socket(2),
stat(2), umask(2), unlink(2), write(2), fopen(3), mkfifo(3)