File: mknod.2

package info (click to toggle)
manpages-es 1.55-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,472 kB
  • ctags: 6
  • sloc: sh: 1,349; makefile: 63
file content (165 lines) | stat: -rw-r--r-- 5,041 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
.\"                               1993 Michael Haardt
.\"                               1993,1994 Ian Jackson.
.\" You may distribute it under the terms of the GNU General
.\" Public Licence. It comes with NO WARRANTY.
.\"
.\" Tiny fix by urs - 960818
.\" Translation revised 21 April 1998 by Juan Piernas <piernas@dif.um.es>
.\" Translation revised Mon Aug 17 1998 by Juan Piernas <piernas@ditec.um.es>
.\"
.TH MKNOD 2 "29 Marzo 1994" "Linux 1.0" "Manual del Programador de Linux"
.SH NOMBRE
mknod \- crea un fichero especial o un fichero regular
.SH SINOPSIS
.nf
.B #include <sys/types.h>
.B #include <sys/stat.h>
.B #include <fcntl.h>
.B #include <unistd.h>
.sp
.BI "int mknod(const char *" pathname ", mode_t " mode ", dev_t " dev );
.fi
.SH DESCRIPCIÓN
.B mknod
intenta crear en el sistema de ficheros un nodo-i (fichero, fichero especial
de dispositivo o tubería nombrada (FIFO)) llamado
.IR pathname ", especificado por " mode " y " dev .
.I 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
.B umask
en la forma usual: los permisos del nodo-i creado son
.BR "(mode & ~umask)" .

El tipo de fichero debe ser uno de los siguientes:
.BR 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
.BR S_IFCHR " o " S_IFBLK
entonces
.I dev
especifica los números mayor y menor del fichero especial de dispositivo
creado; en caso contrario, es ignorado.

Si
.I 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.

.SH VALOR DEVUELTO
.BR mknod
devuelve cero si ha funcionado correctamente, \-1 si ha ocurrido un error (en 
cuyo caso se asigna a
.I errno
un valor apropiado).
.SH ERRORES
.TP
.B EPERM
.I 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
.I pathname
no soporta el tipo de nodo-i solicitado.
.TP
.B EINVAL
.I mode
solicita la creación de algo diferente a un fichero normal, un fichero
especial de dispositivo o una FIFO.
.TP
.B EEXIST
.I pathname
ya existe.
.TP
.B EFAULT
.IR pathname " apunta fuera de su espacio de direcciones permitido". 
.TP
.B 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
.IR pathname .
.TP
.B ENAMETOOLONG
.IR pathname " es demasiado largo."
.TP
.B ENOENT
Un directorio componente de 
.I pathname
no existe o es un enlace simbólico descolgado.
.TP
.B ENOTDIR
Un componente utilizado como directorio en
.I pathname
no es, de hecho, un directorio.
.TP
.B ENOMEM
No hay suficiente memoria disponible en el núcleo.
.TP
.B EROFS
.I pathname
indica un fichero en un sistema de ficheros de sólo\-lectura.
.TP
.B ELOOP
Se han encontrado demasiados enlaces simbólicos al resolver
.IR pathname .
.TP
.B ENOSPC
El dispositivo que contiene
.I pathname
no tiene espacio para el nuevo nodo-i.
.SH 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. 
.SH OBSERVACIONES
POSIX 1003.1-2001 dice: "El único uso portable de
.BR mknod ()
es para crear un fichero especial de tipo FIFO. Si
.I mode
es distinto de S_IFIFO o
.I dev
es distinto de 0, el comportamiento de
.BR 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
.BR mkdir ,
y para crear FIFOs use
.BR mkfifo .

Existen numerosas pegas en el protocolo por debajo de NFS. Algunas de estas
afectan a
.BR mknod .
.SH "VÉASE TAMBIÉN"
.BR close (2),
.BR fcntl (2),
.BR mkdir (2),
.BR mount (2),
.BR open (2),
.BR read (2),
.BR socket (2),
.BR stat (2),
.BR umask (2),
.BR unlink (2),
.BR write (2),
.BR fopen (3),
.BR mkfifo (3)