Provided by: manpages-es_1.55-10_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'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)