問題タブ [kqueue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - cocoaでフォルダー変更通知(フォルダーウォッチャー)を取得する方法
Cocoa アプリケーション開発は初めてです。特定のディレクトリの下にあるファイルが変更されたときにアプリケーションに通知するようにします (フォルダー ウォッチャー)。修正とは、ファイルの内容が削除、追加、変更されたことを意味します。http://www.zathras.de/angelweb/sourcecode.htm#UKKQueueの UKKQueue のように、NSWorkspace の通知センターまたはデリゲート メッセージを使用して FSEvents を使用してみました。ディレクトリの下のファイルが変更されると、私のアプリケーションは通知を受け取りました。しかし、問題は、変更された特定のファイルの名前またはパスを指定していないことです。ディレクトリのパスを提供しますが、特定のファイルのパスは提供しません。
特定のファイルの変更についてフォルダーを監視するにはどうすればよいですか??
select - select()の「errorfds」セットに相当するkqueue()/ kevent()はありますか?
今日、いくつかのコードをselect()からkqueue()に移植していましたが、kevent()にはselect()の「例外セット」機能に類似したものがないようです。
つまり、select()の関数シグネチャは次のとおりです。
...そしてkevent()では、EVFILT_READは(readfds)に対応し、EVFILT_WRITEは(writefds)に対応しますが、(errorfds)に対応するEVFILT_ERRORのようなものは表示されません。
kevent()でのsocket-error-conditionsのサポートは本当にないのですか、それとも存在しますが、私には明らかではない方法で実装されていますか?
python - リモートネットワークの変更を通知しないウォッチドッグ(osx)
私はWatchdogを使用して、時間の経過とともに作成される特定のパターンのファイルについて、非再帰的なネットワークディレクトリを監視しています。私が見ている問題は、ローカルでテストすると素晴らしい動作をしますが、リモートマシンから監視対象ディレクトリに変更を加えても、イベントがトリガーされないことです。
これが私の構成の具体的な詳細です:
- OSX
- NFSマウントで、再帰的ではない単一のディレクトリを監視する
- Python 2.6
私の問題の例は、ストックサンプルスニペットを使用して簡単に再現できます。
これをネットワークディレクトリで開始し、同じシステムから変更を加えると、イベントがディスパッチされます。ただし、ネットワーク上の別のマシンからディレクトリに変更を加えた場合、イベントはディスパッチされません。
kqueueの制限に関する何かが欠けていますか(または、Watchdogによって最初に優先されると言われているため、OSXのFSEventsである可能性があります)?
私はこのpythonパッケージに夢中になり、ファイルシステムのポーリングを置き換える他のスクリプトに使用し始めようとしていましたが、この問題が発生する理由に関する情報が見つからないようです。
アップデート
MacFSEventsもテストしましたが、同じ問題が発生しました。次に、上記のテストスクリプトを変更して、さまざまなオブザーバーを強制的に試行しました。
したがって、少なくとも今のところ、誰かが私が抱えている実際の問題に光を当てるまで、ポーリングオブザーバーを使用でき、コードを変更する必要はありません。
io - kqueue() と O_NONBLOCK
kqueue() を使用する場合、ファイル記述子に O_NONBLOCK を設定する必要がありますか? 言い換えれば、kqueue() は、O_NONBLOCK が設定されているかどうかに関係なく、準備完了のファイル記述子に対する次の I/O 操作がブロックされないことを保証しますか?
objective-c - ファイルを変更するとkevent NOTE_DELETEが送信されます
ファイルで kqueue と kevent を使用しようとしています。ファイルが変更されたら、ソフトウェアを更新します。ファイルが削除されたら、ソフトウェアのリンクを削除します。
だから私はkqueueを初期化します
次に、keventを呼び出してファイルを変更すると
私は NOTE_ATTRIB イベントを取得し、次に NOTE_DELETE を取得します...なぜですか?
cocoa - ディレクトリのファイル変更を監視する
ファイルがいつ変更されるかについて、ディレクトリ (数千のファイル、約 5 レベルのサブディレクトリ) を監視したいと考えています。FSEvents API を使用して、そのディレクトリ内でファイルが変更されたときにディレクトリを監視できることはわかっていますが、変更されたファイルを特定する方法がわかりません。この参照は、バイナリ ツリーを構築し、イベントがトリガーされるたびにツリーをトラバースすることを示唆していますが、どのファイルが変更されたかを判断する最善の方法ですか? そうでない場合、より良い代替手段は何ですか?
ディレクトリを再帰的にスキャンし、すべてのファイルに kqueue を添付する方がよいでしょうか? それが何千ものファイルでどれだけうまくいくかわかりませんか?
c - KqueueはEVFILT_READとEVFILT_WRITEの両方を返しますが、別々の(ident、filt)ペアをインストールしました
kqueueから期待される動作なのか、それとも私が間違っているのかわからないという問題が発生しています。
単一のソケットファイル記述子に対して、kqueueを使用して個別のイベントをインストールする必要があります。個別のイベントは、(sockfd、EVFILT_READ)と(sockfd、EVFILT_WRITE)のイベントです。ただし、後でkqueueからイベントをプルすると、kqueueから2つのイベントが取得されますが、両方のイベントに(event.filter&EVFILT_READ)と(event.filter&EVFILT_WRITE)が含まれています。
それらを分離する必要があります。そうしないと、どのイベントが実際に準備ができているか、読み取りまたは書き込みができるかわかりません。
これは、問題を説明するためにまとめたサンプルコードです。これは、各イベントで両方のフィルターフラグを取得する理由を理解するための単なるテストコードであることに注意してください。
私はこれを理解することができませんでした。別々のイベントをインストールしたときに、各kqueueイベントにEVFILT_READとEVFILT_WRITEの両方が含まれるのはなぜですか?
これが私に引き起こしている本当の問題は、これらのイベントは常にEVFILT_READを報告するため、読み取りが利用可能であると常に考えているコードの副作用がありますが、実際には存在しないため、read()の呼び出しは失敗し、その他の結果。このコードはこれらの結果を示していないことに注意してください。これは私が書いた問題のサンプルにすぎないので、これを理解して実際のコードを続行します。
何か案は?
PSprintfからの出力は次のとおりです。
macos - OS Xはepoll機能をサポートしていませんか?
epoll関数の使い方を学んでいます。しかし、私のOSXであるMountainLionには、ヘッダーファイルsys/epoll.hがありません。
OS Xでepoll関数を使用したいのですが、epoll関数を使用するにはどうすればよいですか?
objective-c - CocoaのKQueueラッパー
だから私は単一のファイルを監視したいと思います、そして私が知る限り、KQueueはCocoaでそれを行う方法です。部分的に機能しているFSEventsコードを実行していますが、フォルダー全体を監視しています。
ファイルが変更されたときに監視するために使用できる優れたCocoaラッパーを誰かが推奨できますか?できれば、ファイルパスを受け取る行に沿って何かを実行し、変更を検知するとコードのブロックを実行することが望ましい。
任意の提案をいただければ幸いです。
また、カカオにはこのようなものが組み込まれていないのにも驚いていますか?
c - 通常のファイルをキューに入れる
kqueue (OS X 上) は通常のファイルの読み書きに便利ですか? Linuxの通常のファイルにはepollが役に立たないことを知っているので、kqueueにも同じことが当てはまるかどうか疑問に思っています。
編集:ファイルの読み取り/書き込みを意味するのではなく、明らかに read() と write() がそのためのものです。つまり、「kqueue は、ファイルが読み取り可能/書き込み可能であることを検出するのに実際に役立ちますか?」ということです。