kqueue (OS X 上) は通常のファイルの読み書きに便利ですか? Linuxの通常のファイルにはepollが役に立たないことを知っているので、kqueueにも同じことが当てはまるかどうか疑問に思っています。
編集:ファイルの読み取り/書き込みを意味するのではなく、明らかに read() と write() がそのためのものです。つまり、「kqueue は、ファイルが読み取り可能/書き込み可能であることを検出するのに実際に役立ちますか?」ということです。
kqueue (OS X 上) は通常のファイルの読み書きに便利ですか? Linuxの通常のファイルにはepollが役に立たないことを知っているので、kqueueにも同じことが当てはまるかどうか疑問に思っています。
編集:ファイルの読み取り/書き込みを意味するのではなく、明らかに read() と write() がそのためのものです。つまり、「kqueue は、ファイルが読み取り可能/書き込み可能であることを検出するのに実際に役立ちますか?」ということです。
カーネルキューは、「カーネルレベルのイベントをインターセプトして、ソケット、プロセス、ファイルシステム、およびシステムのその他の側面への変更に関する通知を受信できるようにする」メカニズムです。
ファイル(またはホット フォルダー内) でいつアクションが発生したかを検出するために、過去にそれらを使用しました。ただし、ファイルの「読み取り」と「書き込み」に使用できるとは思いません。必要に応じて、MacOS ネイティブ関数または通常の UN*X スタイルの " fopen
"、" fwrite
"、および " fread
" 呼び出しも使用できます。
はい、kqueue を使用してファイルを監視して読みやすくすることができます。マニュアルページから:
EVFILT_READ Takes a file descriptor as the identifier, and returns
whenever there is data available to read. The behavior
of the filter is slightly different depending on the
descriptor type.
[...]
Vnodes
Returns when the file pointer is not at the end of
file. data contains the offset from current posi-
tion to end of file, and may be negative.
(このコンテキストでは、「vnode」は通常のファイルです。)
通常のファイルは常に書き込み可能であるため、それらに適用EVFILT_WRITE
しても意味がありません。