inotify_add_watch - 初期化済み inotify
インスタンスに監視対象を追加する
#include <sys/inotify.h>
int inotify_add_watch(int fd, const char
*pathname, uint32_t mask);
inotify_add_watch() は、
pathname
で指定された位置にあるファイルを監視する監視アイテム
(watch) の新規追加、
または既存の監視アイテムの変更を行う。
呼び出し元は、監視対象のファイルに対する読み出し許可を
持っていなければならない。
fd
引き数は、変更を行う監視対象リスト
(watch list) を持つ inotify
インスタンスを参照するファイルディスクリプタである。
pathname
のどのイベントを監視するかは、引き数のビットマスク
mask で指定する。
mask
に設定できるビットの説明については
inotify(7) を参照のこと。
inotify_add_watch()
の呼び出しが成功すると、変更対象の
inotify インスタンスで
pathname
に対応付けられる一意な監視対象ディスクリプタ
(watch descriptor) を返す。
pathname
がその inotify
インスタンスに追加されていなければ、
監視対象ディスクリプタが新規に割り当てられる。
pathname
がすでに監視対象になっていれば、既存の監視アイテムに対する
ディスクリプタが返される。
これ以降に inotify
ファイルディスクリプタから
read(2)
を行うと、監視対象ディスクリプタが返される。
これらの
read()
を行うと、ファイルシステムイベントを示す
inotify_event
構造体が読み出される
(
inotify(7)
参照)。この構造体内の監視対象ディスクリプタにより、
どのオブジェクトでそのイベントが発生したかを特定できる。
返り値¶
成功すると、
inotify_add_watch()
は非負の監視対象ディスクリプタを返す。
エラーの場合、-1
を返し、
errno
を適切に設定する。
エラー¶
- EACCES
- 指定されたファイルに対する読み出しアクセスが許可されていない。
- EBADF
- 指定されたファイルディスクリプタが有効ではない。
- EFAULT
- pathname
が指すアドレスがプロセスがアクセスできるアドレス空間外である。
- EINVAL
- 指定されたイベントマスクに有効なイベントが含まれていない。
もしくは fd が inotify
ファイルディスクリプタではない。
- ENOENT
- pathname
のディレクトリ部分の構成要素が、存在しないか、
リンク切れのシンボリックリンクである。
- ENOMEM
- カーネルメモリが十分になかった。
- ENOSPC
- inotify
監視対象の総数がユーザが追加できる上限に達していた。
もしくは、必要な資源の割り当てにカーネルが失敗した。
バージョン¶
inotify は Linux カーネル 2.6.13
に組み込まれた。
このシステムコールは
Linux 独自である。
関連項目¶
inotify_init(2),
inotify_rm_watch(2),
inotify(7)
この文書について¶
この man ページは Linux
man-pages
プロジェクトのリリース
3.41 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。