Provided by: manpages-es_1.55-9_all bug

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ÓN

       mknod  intenta  crear  en  el  sistema  de ficheros un nodo-i (fichero,
       fichero especial de dispositivo  o  tubería  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
       combinación  (mediante  un  O-lógico)  de  uno de los tipos de ficheros
       enumerados a continuación y de los permisos para el nuevo nodo-i.   Los
       permisos  son  modificados  por la máscara 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 será creado
       vacío), un fichero especial  de  caracteres,  un  fichero  especial  de
       bloques  o  FIFO  (tubería con nombre), respectivamente, o cero, lo que
       creará un fichero normal.

       Si el tipo de fichero es S_IFCHR o S_IFBLK entonces dev especifica  los
       números  mayor  y  menor del fichero especial de dispositivo creado; en
       caso contrario, es ignorado.

       Si pathname ya existe, o es un enlace simbólico, esta  llamada  fallará
       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 semántica de grupos de BSD,  el  nuevo  nodo
       heredará la pertenencia al grupo al que pertenezca su directorio padre;
       en caso contrario, pertenecerá 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 creación de algo distinto  a  una  tubería  con
              nombre  (FIFO), y el invocador no es el superusuario; este error
              también se devuelve si  el  sistema  de  ficheros  que  contiene
              pathname no soporta el tipo de nodo-i solicitado.

       EINVAL mode solicita la creación 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  búsqueda  (ejecución)  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
              simbólico descolgado.

       ENOTDIR
              Un  componente  utilizado  como directorio en pathname no es, de
              hecho, un directorio.

       ENOMEM No hay suficiente memoria disponible en el núcleo.

       EROFS  pathname  indica  un  fichero  en  un  sistema  de  ficheros  de
              sólo-lectura.

       ELOOP  Se  han  encontrado  demasiados  enlaces  simbólicos 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 versión Linux difiere de la SVr4 en que no requiere permisos
       de  superusuario  para  crear  tuberías,  y  también en que los errores
       EMULTIHOP, ENOLINK, o EINTR no están documentados.

OBSERVACIONES

       POSIX 1003.1-2001 dice: "El único 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ÉASE TAMBIÉN

       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)