Unix-system-calls-mknod
[top]#
[[File:]]
[[File:]] |
|Web |This Site
- 初心者向けのUnix *
- Unix-ホーム
- Unix-はじめに
- Unix-ファイル管理
- Unix-ディレクトリ
- Unix-ファイル権限
- Unix-環境
- Unix-基本ユーティリティ
- Unix-パイプとフィルタ
- Unix-プロセス
- Unix-コミュニケーション
- Unix-The Vi Editor
- Unix Shellプログラミング*
- Unix-シェルとは?
- Unix-変数の使用
- Unix-特殊変数
- Unix-配列の使用
- Unix-基本的な演算子
- Unix-意思決定
- Unix-シェルループ
- Unix-ループ制御
- Unix-シェル置換
- Unix-引用メカニズム
- Unix-IOリダイレクト
- UNIX-シェル関数
- Unix-マンページヘルプ
- 高度なUnix *
- Unix-正規表現
- Unix-ファイルシステムの基本
- Unix-ユーザー管理
- Unix-システムパフォーマンス
- Unix-システムログ
- Unix-信号とトラップ
- Unixの便利なリファレンス*
- Unix-便利なコマンド
- Unix-クイックガイド
- Unix-組み込み関数
- Unix-システムコール
- Unix-コマンドリスト
- Unixの役立つリソース*
- Unix役立つリソース
選択した読書
- http://www.finddevguides.com/computer_glossary [コンピュータ用語集] *http://www.finddevguides.com/computer_whoiswho[Who is Who]
Copyright©2014 by finddevguides
Home | References | Discussion Forums | About TP |
mknod()-Unix、Linuxシステムコール
[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]
広告
NAME
mknod-特別なファイルまたは通常のファイルを作成します
概要
#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); |
説明
システムコール mknod ()は、_mode_および_dev_で指定された属性を使用して、_pathname_という名前のファイルシステムノード(ファイル、デバイススペシャルファイル、または名前付きパイプ)を作成します。
_mode_引数は、使用する許可と作成するノードのタイプの両方を指定します。 以下にリストされているファイルタイプのいずれかと、新しいノードの権限の組み合わせ(ビット単位のORを使用)である必要があります。
許可は、プロセスの umask によって通常の方法で変更されます。作成されたノードの許可は*(mode&〜umask)*です。
ファイルタイプは、 S_IFREG 、 S_IFCHR 、 S_IFBLK 、 S_IFIFO 、または S_IFSOCK のいずれかである必要があり、通常のファイル(空で作成されます)、キャラクタースペシャルファイル、ブロックスペシャルファイル、FIFO(名前付きパイプ)、またはUnixドメインソケット、それぞれ。 (ファイルタイプがゼロの場合は、S_IFREGタイプと同等です。)
ファイルタイプが S_IFCHR または S_IFBLK の場合、_dev_は新しく作成されたデバイス特殊ファイルのメジャー番号とマイナー番号を指定します。それ以外の場合は無視されます。
_pathname_が既に存在する場合、またはシンボリックリンクである場合、この呼び出しはEEXISTエラーで失敗します。
新しく作成されたノードは、プロセスの有効なユーザーIDによって所有されます。 ノードを含むディレクトリにset-group-IDビットが設定されている場合、またはファイルシステムがBSDグループセマンティクスでマウントされている場合、新しいノードは親ディレクトリからグループ所有権を継承します。それ以外の場合は、プロセスの有効なグループIDによって所有されます。
返り値
エラー
Tag
説明
親ディレクトリがプロセスへの書き込み許可を許可していないか、_pathname_のパスプレフィックス内のディレクトリの1つが検索許可を許可していません。 ( path_resolution (2)も参照してください。)
_pathname_はすでに存在します。
_pathname_は、アクセス可能なアドレス空間の外側を指します。
_mode_は、通常のファイル、デバイス特殊ファイル、FIFO、またはソケット以外の何かの作成を要求しました。
_pathname_の解決中に検出されたシンボリックリンクが多すぎます。
_pathname_が長すぎました。
_pathname_のディレクトリコンポーネントが存在しないか、ダングリングシンボリックリンクです。
カーネルメモリが不足していました。
_pathname_を含むデバイスには、新しいノード用のスペースがありません。
_pathname_でディレクトリとして使用されるコンポーネントは、実際にはディレクトリではありません。
_mode_は、通常のファイル、FIFO(名前付きパイプ)、またはUnixドメインソケット以外の作成を要求しましたが、呼び出し元には特権がありません(Linux: CAP_MKNOD 機能はありません)。 _pathname_を含むファイルシステムが要求されたノードのタイプをサポートしていない場合にも返されます。
_pathname_は、読み取り専用ファイルシステム上のファイルを指します。
準拠
SVr4、4.4BSD、POSIX.1-2001(ただし、以下を参照)。
ノート
POSIX.1-2001は次のように述べています。「 mknod ()の唯一の移植可能な使用は、FIFO特殊ファイルを作成することです。 _mode_がS_IFIFOでない場合、または_dev_が0でない場合、 mknod ()の動作は指定されていません。
Linuxでは、この呼び出しを使用してディレクトリを作成することはできません。 mkdir (2)でディレクトリを作成し、 mkfifo (2)でFIFOを作成する必要があります。
NFSの基礎となるプロトコルには多くの不備があります。 これらのいくつかは mknod ()に影響します。
関連項目
[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]
広告
Advertisements |