6

kqueue (OS X 上) は通常のファイルの読み書きに便利ですか? Linuxの通常のファイルにはepollが役に立たないことを知っているので、kqueueにも同じことが当てはまるかどうか疑問に思っています。

編集:ファイルの読み取り/書き込みを意味するのではなく、明らかに read() と write() がそのためのものです。つまり、「kqueue は、ファイルが読み取り可能/書き込み可能であることを検出するのに実際に役立ちますか?」ということです。

4

2 に答える 2

2

カーネルキューは、「カーネルレベルのイベントをインターセプトして、ソケット、プロセス、ファイルシステム、およびシステムのその他の側面への変更に関する通知を受信できるようにする」メカニズムです。

ファイル(またはホット フォルダー内) でいつアクションが発生したかを検出するために、過去にそれらを使用しました。ただし、ファイルの「読み取り」と「書き込み」に使用できるとは思いません。必要に応じて、MacOS ネイティブ関数または通常の UN*X スタイルの " fopen"、" fwrite"、および " fread" 呼び出しも使用できます。

于 2013-01-13T02:24:47.473 に答える
1

はい、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しても意味がありません。

于 2013-01-14T05:24:42.067 に答える