uv_fs_event_t — FS Eventハンドル¶
FS Eventハンドルは、指定したパスの変更を監視できます。たとえば、ファイル名の変更や、ファイル内の一般的な変更を検出します。このハンドルは、プラットフォームごとに最適なバックエンドを使います。
注記
AIXでは、標準では導入されないIBM bos.ahafsパッケージをインストールする必要があります。AIX Event Infrastructureファイルシステム(ahafs)には、次の制限があります。
ahafsはプロセス単位で監視を管理しており、スレッドセーフではありません。同じイベントを監視する場合、監視ハンドルごとに別のプロセスを起動する必要があります。
ファイルを含むフォルダーだけを監視している場合、ファイルの変更(書き込み)イベントは受信しません。
詳しくは、文書を参照してください。
z/OSのファイルシステムイベント監視基盤は、監視しているディレクトリー内でのファイルの作成や削除を通知しません。詳しくは、IBM Knowledge centreを参照してください。
データ型¶
-
type uv_fs_event_t¶
FS Eventハンドルの型です。
-
typedef void (*uv_fs_event_cb)(uv_fs_event_t *handle, const char *filename, int events, int status)¶
次の関数へ渡すコールバックです:
uv_fs_event_start()。ハンドルを開始した後、繰り返し呼び出します。ディレクトリーを指定してハンドルを開始した場合、filenameパラメーターは、そのディレクトリー内のファイルへの相対パスです。ファイル名を特定できない場合は、NULLになります。
次のパラメーター、eventsは、次の列挙型の要素をORで組み合わせたマスクです:
uv_fs_event。
注記
FreeBSDでは、カーネルのバグにより、パスがNULLになる場合があります。
-
enum uv_fs_event¶
次の型のハンドルが監視するイベントの型です:
uv_fs_event_t。enum uv_fs_event { UV_RENAME = 1, UV_CHANGE = 2 };
-
enum uv_fs_event_flags¶
次の関数へ渡して動作を制御するフラグです:
uv_fs_event_start()。enum uv_fs_event_flags { /* * By default, if the fs event watcher is given a directory name, we will * watch for all events in that directory. This flags overrides this behavior * and makes fs_event report only changes to the directory entry itself. This * flag does not affect individual files watched. * This flag is currently not implemented yet on any backend. */ UV_FS_EVENT_WATCH_ENTRY = 1, /* * By default uv_fs_event will try to use a kernel interface such as inotify * or kqueue to detect events. This may not work on remote file systems such * as NFS mounts. This flag makes fs_event fall back to calling stat() on a * regular interval. * This flag is currently not implemented yet on any backend. */ UV_FS_EVENT_STAT = 2, /* * By default, event watcher, when watching directory, is not registering * (is ignoring) changes in its subdirectories. * This flag will override this behaviour on platforms that support it. */ UV_FS_EVENT_RECURSIVE = 4 };
公開メンバー¶
該当なし
関連項目
次の型のuv_handle_tメンバーも適用されます。
API¶
-
int uv_fs_event_init(uv_loop_t *loop, uv_fs_event_t *handle)¶
ハンドルを初期化します。
-
int uv_fs_event_start(uv_fs_event_t *handle, uv_fs_event_cb cb, const char *path, unsigned int flags)¶
指定したコールバックでハンドルを開始し、指定したpathの変更を監視します。flagsには、次の列挙型のフラグをORで組み合わせたマスクを指定できます:
uv_fs_event_flags。注記
現在サポートしているフラグは、
UV_FS_EVENT_RECURSIVEだけであり、OSXとWindowsだけで利用できます。注記
macOSでは、
uv_fs_event_startを呼び出す直前にOSが収集したイベントを、uv_fs_event_cbコールバックへ通知する場合があります。
-
int uv_fs_event_stop(uv_fs_event_t *handle)¶
ハンドルを停止します。以後、コールバックを呼び出しません。
-
int uv_fs_event_getpath(uv_fs_event_t *handle, char *buffer, size_t *size)¶
ハンドルが監視しているパスを取得します。バッファはユーザーが事前に確保する必要があります。成功時は0、失敗時は0未満のエラーコードを返します。成功時は、bufferにパスが入り、sizeにその長さが入ります。バッファが十分な大きさでない場合は、UV_ENOBUFSを返し、sizeを、ヌル終端文字を含む必要なサイズに設定します。
バージョン1.3.0での変更: 返す長さに終端ヌルバイトを含めなくなり、バッファもヌル終端しなくなりました。
バージョン1.9.0での変更: 次のエラー、UV_ENOBUFSの場合、返す長さに終端ヌルバイトを含めるようになりました。また、成功時にはバッファをヌル終端します。
関連項目
次の型のuv_handle_tAPI関数も適用されます。