MKNOD(2)

名称
mknod - 特殊なファイルノードを作成する

ライブラリ
libc

書式
<unistd.h> int mknod(const char *path, mode_t mode, dev_t dev)

解説
ファイルシステムノード path が、 mode で指定されたファイルタイプとアクセス許可で作成されます。 アクセス許可はプロセスの umask 値による修正を受けます。

mode がブロックまたはキャラクタ型特殊ファイルを示す場合、 dev はシステム上の特定のデバイスを示す構成に依存する指示です。 そうでない場合 dev は無視されます。

mknod() システムコールはスーパユーザ権限が必要です。

戻り値

エラー
mknod() システムコールは次の場合に処理に失敗し、ファイルは作成されません:

[ENOTDIR]
    パスの構成要素中にディレクトリ以外のものが含まれています。

[ENAMETOOLONG]
    パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。

[ENOENT]
    パスの構成要素が存在しません。

[EACCES]
    指定されたパスには、検索が許可されていないディレクトリが含まれています。

[ELOOP]
    パス名を変換するときに検出されたシンボリックリンクが多すぎます。

[EPERM]
    プロセスの実効ユーザ ID がスーパユーザではありません。

[EIO]
    ディレクトリエントリの作成中、あるいは inode を割り当て中に 入出力エラーが発生しました。

[ENOSPC]
    新しいノード用のエントリを配置するディレクトリが拡張できません。 ディレクトリが入っているファイルシステム上に空き容量が残っていません。

[ENOSPC]
    ノードを作成するファイルシステム上に未使用の inode がありません。

[EDQUOT]
    新しいノードのエントリを配置するディレクトリが拡張できません。 ディレクトリが入っているファイルシステム上のディスクブロックのユーザの クォータが枯渇しました。

[EDQUOT]
    ノードを作成中のファイルシステム上の inode のユーザのクォータが 枯渇しました。

[EROFS]
    指定されたファイルは読取り専用ファイルシステム上にあります。

[EEXIST]
    指定のファイルがすでに存在しています。

[EFAULT]
    path 引数が、プロセスに割り当てられたアドレス空間の範囲外を指しています。

[EINVAL]
    ブロックまたはキャラクタ型特殊ファイル (または whiteout) 以外の作成は行われません。

関連項目
chmod(2), mkfifo(2), stat(2), umask(2)

歴史
mknod() 関数は AT&T UNIX で登場しました。