スポンサーリンク

MKNOD(2) FreeBSD システムコールマニュアル MKNOD(2)

名称

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

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <unistd.h>

int

mknod(const char *path, mode_t mode, dev_t dev);

解説

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

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

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

戻り値

関数 mknod() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。

エラー

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() 関数は Version 6 AT&T UNIX で登場しました。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク