kqueue(OS X)は通常のファイルを読み書きするのに便利ですか?私はepollがではないことを知っています。はLinux上の通常のファイルに便利ですので、同じことがkqueueに当てはまるのでしょうか。Kqueue on regular files
編集:私はファイルの読み書きを意味するわけではありませんが、明らかにread()とwrite()はそのためのものです。私は、 "kqueueは実際にファイルが読み書き可能なときを検出するのに本当に役に立ちますか?
kqueue(OS X)は通常のファイルを読み書きするのに便利ですか?私はepollがではないことを知っています。はLinux上の通常のファイルに便利ですので、同じことがkqueueに当てはまるのでしょうか。Kqueue on regular files
編集:私はファイルの読み書きを意味するわけではありませんが、明らかにread()とwrite()はそのためのものです。私は、 "kqueueは実際にファイルが読み書き可能なときを検出するのに本当に役に立ちますか?
はい、kqueueは可読性のためにファイルを見るために使用できます。 manページから:
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.
(「vノード」、この文脈では、通常のファイルです。)
通常のファイルは常に書き込み可能であるため、それは彼らにEVFILT_WRITE
を適用しても意味がありません。
カーネルキューは、私はdetect when when actions happen on a file(またはホットフォルダ内)に、過去にそれらを使用しました"allow you to intercept kernel-level events to receive notifications about changes to sockets, processes, the file system and other aspects of the system."
メカニズムです。私は彼らが "読み込み"と "書き込み"ファイルに使用できるとは思わない。 MacOSのネイティブ関数や通常のUN * Xスタイル "fopen
"、 "fwrite
"、 "fread
"も使用できます。
通常のファイルが常に書き込み可能であることをどのように知っていますか? –
ファイルは、ソケット、パイプ、その他のものと同じように、一時的に書き込めない(「満杯」から)ことはありません。 – duskwuff
@ duskwuffいいえ、間違いなくブロックします。それらはアプリケーションの遅延/ハングアップを引き起こす可能性があります。これらのメカニズムを使用することの全ポイントは、これらのリソース上のイベントを通知し、これらのリソースにアクセスすることは、これらのイベントに関連してブロックされません。 「完全な」概念は無関係です。 – Rahly