OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man2 / mknod.2
1 .\" Hey Emacs! This file is -*- nroff -*- source.
2 .\"
3 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
4 .\"                               1993 Michael Haardt
5 .\"                               1993,1994 Ian Jackson.
6 .\" You may distribute it under the terms of the GNU General
7 .\" Public License. It comes with NO WARRANTY.
8 .\"
9 .\" Modified 1996-08-18 by urs
10 .\" Modified 2003-04-23 by Michael Kerrisk
11 .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
12 .\"
13 .\"*******************************************************************
14 .\"
15 .\" This file was generated with po4a. Translate the source file.
16 .\"
17 .\"*******************************************************************
18 .TH MKNOD 2 2010\-09\-20 Linux "Linux Programmer's Manual"
19 .SH 名前
20 mknod \- 特殊ファイルや通常のファイルを作成する
21 .SH 書式
22 .nf
23 \fB#include <sys/types.h>\fP
24 \fB#include <sys/stat.h>\fP
25 \fB#include <fcntl.h>\fP
26 \fB#include <unistd.h>\fP
27 .sp
28 \fBint mknod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, dev_t \fP\fIdev\fP\fB);\fP
29 .fi
30 .sp
31 .in -4n
32 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
33 .in
34 .sp
35 \fBmknod\fP():
36 .ad l
37 .RS 4
38 _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
39 .RE
40 .ad
41 .SH 説明
42 システムコール \fBmknod\fP()  は \fIpathname\fP という名前のファイルシステム・ノード
43 (ファイル、デバイススペシャルファイル、名前付きパイプ) を、 属性 \fImode\fP と \fIdev\fP の指定にしたがって作成する。
44
45 \fImode\fP 引き数には、作成するノードの許可属性 (permission) とタイプを指定する。 \fImode\fP
46 の指定は以下にあげるファイルタイプのうちの 1 つと、 許可属性の組合せ (ビットごとの OR を使用) で行う。
47
48 許可属性は通常通り、プロセスの \fIumask\fP によって修正され、作成されたノードの許可属性は \fI(mode & ~umask)\fP となる。
49
50 .\" (S_IFSOCK since Linux 1.2.4)
51 ファイルタイプには \fBS_IFREG\fP, \fBS_IFCHR\fP, \fBS_IFBLK\fP, \fBS_IFIFO\fP, \fBS_IFSOCK\fP
52 のいずれかを指定しなければならない。 それぞれ順に、通常のファイル (空のファイルとして作成される)・
53 キャラクタスペシャルファイル・ブロックスペシャルファイル・ FIFO (名前付きパイプ)・UNIX ドメインソケットである (ファイルタイプ 0 は
54 \fBS_IFREG\fP と同じである)。
55
56 ファイルタイプが \fBS_IFCHR\fP または \fBS_IFBLK\fP のとき、 \fIdev\fP には作成するデバイススペシャルファイルのメジャー番号と
57 マイナー番号を指定する (\fBmakedev\fP(3)  は \fIdev\fP のこれらの番号を作成する際に役立つだろう)。 それ以外の場合は \fIdev\fP
58 は無視される。
59
60 \fIpathname\fP が既に存在する場合、またはシンボリックリンクの場合、 この呼び出しは \fBEEXIST\fP エラーで失敗する。
61
62 新しく作成されたノードの所有者はプロセスの実効ユーザ ID にセットされる。 新たに作られたノードを保持する 親ディレクトリの set\-group\-ID
63 ビットがセットされていたり、 ファイルシステムが BSD のグループセマンティクスにしたがって
64 マウントされている場合には、新しいノードのグループ所有権は親ディレクトリの グループ所有権を継承する (親ディレクトリと同じになる)。
65 また、そうでなかった場合の所有グループはプロセスの実効グループ ID となる。
66 .SH 返り値
67 \fBmknod\fP()  は成功した場合 0 を、失敗した場合 \-1 を返す (失敗した場合 \fIerrno\fP がエラーの内容にしたがってセットされる)。
68 .SH エラー
69 .TP 
70 \fBEACCES\fP
71 プロセスが親ディレクトリへの書き込み許可を持たない。 もしくはパス名 \fIpathname\fP 中のディレクトリ部分のどれかに検索許可属性が無い
72 (\fBpath_resolution\fP(7)  も参照すること)。
73 .TP 
74 \fBEEXIST\fP
75 \fIpathname\fP がすでに存在する。 これには \fIpathname\fP がシンボリックリンクである場合も含まれる
76 (シンボリックリンクがリンク切れか (dangling) どうかは関係ない)。
77 .TP 
78 \fBEFAULT\fP
79 \fIpathname\fP がそのプロセスのアクセス可能なアドレス空間の外を指している。
80 .TP 
81 \fBEINVAL\fP
82 \fImode\fP が通常のファイル・デバイススペシャルファイル・FIFO・ソケット以外を 作成するようにセットされている。
83 .TP 
84 \fBELOOP\fP
85 パス名 \fIpathname\fP を解決するときに、含まれているシンボリックリンクが多すぎた。
86 .TP 
87 \fBENAMETOOLONG\fP
88 \fIpathname\fP が長過ぎる。
89 .TP 
90 \fBENOENT\fP
91 \fIpathname\fP 中のディレクトリ部分が存在しない、 もしくはリンク先の無いシンボリックリンクである。
92 .TP 
93 \fBENOMEM\fP
94 十分なカーネルメモリが無い。
95 .TP 
96 \fBENOSPC\fP
97 \fIpathname\fP のあるデバイスに新たにノードを作成する空きが無い。
98 .TP 
99 \fBENOTDIR\fP
100 \fIpathname\fP 中のディレクトリ要素が、実際にはディレクトリでない。
101 .TP 
102 \fBEPERM\fP
103 .\" For UNIX domain sockets and regular files, EPERM is only returned in
104 .\" Linux 2.2 and earlier; in Linux 2.4 and later, unprivileged can
105 .\" use mknod() to make these files.
106 \fImode\fP は通常のファイル・FIFO (名前付きパイプ)・UNIX ドメインソケット以外を 作成するようにセットされているが、実行者が特権
107 (Linux では \fBCAP_MKNOD\fP ケーパビリティ (capability)) を持っていない。 または \fIpathname\fP
108 を保持するファイルシステムが、指定されたノード形式をサポートしていない。
109 .TP 
110 \fBEROFS\fP
111 \fIpathname\fP が読み出し専用ファイルシステム上のファイルを指している。
112 .SH 準拠
113 .\" The Linux version differs from the SVr4 version in that it
114 .\" does not require root permission to create pipes, also in that no
115 .\" EMULTIHOP, ENOLINK, or EINTR error is documented.
116 SVr4, 4.4BSD, POSIX.1\-2001 (下記も参照).
117 .SH 注意
118 POSIX.1\-2001 では次のように書いている: 「\fBmknod\fP()  の唯一の移植性のある使用法は、FIFO
119 スペシャルファイルを作成することである。 \fImode\fP が \fBS_IFIFO\fP ではない場合、または \fIdev\fP が 0 ではない場合、
120 \fBmknod\fP()  の挙動は規定されていない。」 しかしながら、現在ではこの目的のために \fBmknod\fP()
121 を使用すべきではない。この目的のために特別に定義された関数である \fBmkfifo\fP()  を使用すべきである。
122
123 .\" and one should make UNIX domain sockets with socket(2) and bind(2).
124 Linux では、ディレクトリを作成するために この呼び出しを使用することはできない。 ディレクトリは \fBmkdir\fP(2)  で作成すべきである。
125
126 NFS を実現しているプロトコルには多くの不備が存在し、 それらのいくつかは \fBmknod\fP()  に影響を与える。
127 .SH 関連項目
128 \fBchmod\fP(2), \fBchown\fP(2), \fBfcntl\fP(2), \fBmkdir\fP(2), \fBmknodat\fP(2),
129 \fBmount\fP(2), \fBsocket\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2),
130 \fBmakedev\fP(3), \fBmkfifo\fP(3), \fBpath_resolution\fP(7)