問題タブ [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.

0 投票する
1 に答える
935 参照

select - keventを使用して選択するにはどうすればよいですか?

kqueue()によって返されるkeventのファイル記述子は、select()またはkevent()への入力として使用できます。

  1. この方法を使用する利点は何ですか?

  2. kevent()を使用して記述子のリストを待機していて、そのリストにいくつかのアクティビティがあるとします。keventのファイル記述子が設定され、select()またはkevent()で読み取り可能になりますか?

0 投票する
2 に答える
800 参照

cocoa - ファイル保存後のファイル監視停止

ここでkqueue入手できる UKKQueue というラッパーを使用して、単一のファイルのエディションを監視しようとしています。このラッパーは非常にシンプルです。使用しているテスト コードは次のとおりです。

のファイル/Users/bruno/Desktop/SyncTestLogはプレーン テキスト ファイルです。ターミナルから使用して編集するとnano、出力は期待どおりに表示されます。

ここで、TextEdit または TextWrangler を使用して編集すると、最初にファイルを保存した後に監視停止レポートが変更されます。報告された最後のイベントは次のとおりです。

私が理解している限りでは、 UKKQueue はフラグを使用してopen()O_EVTONLYで unix のようなファイル記述子を取得します。何らかの理由で、TextEdit (および TextWrangler) はUKKQueueFileDeletedNotification、ファイルを保存するときにこの通知を生成します。

私が必要としているのは、ファイルの変更を「永遠に」聞き続けることです。が到着したらモニターを再作成できると思いますが、UKKQueueFileDeletedNotificationもっときれいなものを探しています。

ありがとう

編集: Google Toolbox For Macで、問題を解決するGTMFileSystemKQueueというクラスが 見つかりました。私の質問に対する答えはまだありません。

0 投票する
2 に答える
323 参照

python - FreeBSD で python と kqueue を使用して、指定されたパスの下でファイルの作成または削除を検出します

FreeBSD システムで /certain/path/ が与えられた場合、python で kqueue を使用して、そのパスの下のどこかにファイルが作成または削除されているかどうかを検出したいと思います。

どうすればいいですか?

0 投票する
2 に答える
1562 参照

python - vimでファイルを書き込んでも、OSXでファイル変更イベントは発生しません

OS Xで.lessファイル変更イベントを監視するためにウォッチドッグを使用しています。TextMateまたはSublimeTextを使用して.lessファイルの内容を変更すると、変更イベントがキャプチャされます。ただし、vimでコンテンツを編集すると、ファイル変更イベントは発生しません(ただし、vimで作成されたファイルのファイル作成イベントはキャプチャされます)。FSEventsとkqueueでも同じ動作が見られました(どちらもほとんど知識がありません)。

誰かがこの行動を説明できるのだろうか?

0 投票する
1 に答える
1640 参照

node.js - Mac OSX の Node 0.5.9 経由の fs.watch

Node v0.5.9 で以下を実行しています。

次に、次のことを行います。

  • cd /Users/username/testingFsWatcher/
  • >file1-->{ '0': 'rename', '1': null }
  • mkdir new_folder-->{ '0': 'rename', '1': null }
  • >new_folder/file2--> イベントのトリガー/出力なし
  • touch file1--> イベントのトリガー/出力なし
  • rm file1-->{ '0': 'rename', '1': null }

サブディレクトリ ( ) が監視されていないことと、監視されているファイルの更新/変更がイベントnew_folderをトリガーしないことです。changeノードコードとテストを見ると、これらが可能であるように思われます。

fs.watchでは、ディレクトリとそのすべてのサブディレクトリを監視することは可能ですか? 少なくともファイルの変更からイベントを取得することは可能ですか? また、私が知る限り、(OSX で) に関連付けられているのfs.watchは、それを取得することは可能ですか?kqueueeventideventid

注:ディレクトリ全体を監視する必要があるためfs.watchではなく、具体的に使用していfs.watchFileます(できればすべてのサブディレクトリも:)。

助けてくれてありがとう!

0 投票する
1 に答える
767 参照

java - NIO セレクターはデフォルトでイベント通知を使用しますか?

OpenJDK は Linux で epoll を使用するという記事を見つけましたが、Selector の実装が従来のポーリングよりも kqueue、dev/poll などを利用できるかどうかを知っている人はいますか?

0 投票する
1 に答える
1164 参照

python - python select.kqueue() を使用して、ファイルが削除または拡張されているかどうかを確認します

こんにちは、BSD のみの python モジュール クラス select.kqueue および select.kevent を使用して、ファイル書き込みイベントの監視を設定する方法を理解するのに苦労しています。

テキストファイルが別のプロセスによって書き込まれるたびに、Pythonプログラムが応答するようにします。私のテストコードは次のようになります:

これらのイベントが実際に発生したことを確認する方法がわかりません。誰かが kqueue を使用してファイルの変更やその他のイベント (ファイルの削除、ファイルの名前変更など) を検出する例を教えてもらえますか?

0 投票する
0 に答える
621 参照

macos - Mac OS X 変更されたファイルが、それを変更したのと同じプロセスによってまだ「使用」されているかどうかをプログラムで検出するにはどうすればよいですか?

私たちが開発したユーティリティの問題を調査しています。ファイルまたはディレクトリを追跡し、変更が加えられたら、新しいバージョンを中央リポジトリにアップロードします。私たちのユーティリティは、変更を追跡できるという点で Dropbox に似ていますが、同期ユーティリティというよりは、バージョン トラッカーのようなものです。

ファイルがいつ変更されたかを検出できます。しかし、変更を行ったプロセスがまだそれを「使用」しているかどうかを検出できるようにしたいと考えています...より適切な用語がないためです。

この問題は、ユーザーが何らかのプログラムでファイルを開き、定期的に [保存] をクリックすると発生します。または、さらに悪いことに、自動保存機能により、進行中の作業が数分ごとに保存されます。これを検出して、ユーザーが最終的にファイルを保存して閉じるときなど、必要なときにのみ保存できるようにしたいと考えています。自動保存機能のあるプログラムを一晩中開いていると、同じファイルの何百もの役に立たないバージョンができてしまいます。

  1. どのプロセスがファイルを保存したかを検出することは可能ですか?
  2. そのプロセスがまだそのファイルを「使用」しているかどうかを検出することは可能ですか。

これは Windows では簡単でしたが、Mac では非常に複雑であることが証明されています。さらに、私たちは Windows と iOS の開発者であり、OS X の専門家ではありません。

0 投票する
2 に答える
901 参照

c - libevent を使用した epoll、kqueue などの NBIO を使用した効率的なプリフォーク サーバー設計

クライアントにデータを「ストリーミング」するための「comet」サーバーを作成する予定です。マルチコア CPU を利用するために過去に 1 つを強化しましたが、今はゼロから始めています。サーバーの電源として epoll/kqueue または libevent を使用する予定です。

私が重視してきた問題の 1 つは、どのサーバー設計を使用するかということです。マルチプロセス モデルを使用してすべての CPU コアを活用することを計画しているため、いくつかのオプションを利用できます。

  1. 事前にフォークされたマルチプロセス - 独自の受け入れを行う各プロセス
  2. マスターを使用した事前フォークされたマルチプロセス - マスター プロセスが受け入れ、記述子の受け渡しを使用して、受け入れたソケットをプロセスに渡します。
  3. 異なるポートを持つ事前フォークされたマルチプロセス - 各プロセスは、同じシステムの異なるポートでリッスンします。ロードバランサーは、個々のデーモン プロセスからの負荷フィードバックに基づいて、次の接続を取得するプロセスを決定します。

設計 #2 は最も複雑です。設計 3 は単純ですが、設計に関係なく追加のハードウェアが必要になります。これは、複数のマシンでこれを実行し、とにかくロードバランサが必要になるためです。設計 1 には雷の群れの問題がありますが、雷の群れは 8 つのプロセスでは大したことではないと思いますが、クライアントが絶えず接続と切断を繰り返している場合 (これはコメット サーバーであるため、これはまれなはずです) は大したことではありません。

私が見たように、#2は複雑で、受け入れごとにマスタープロセスとスレーブプロセスの間で記述子を渡すため、2つの追加のシステムコールが必要です。雷鳴の群れの問題とは対照的に、このオーバーヘッドを持っている方が良いでしょうか? 8 つのプロセスが起動して受け入れを実行している場合、デザイン #1 を使用すると、8 つの受け入れ呼び出しが表示される可能性がありますか?

デザインの選択の長所と短所は何ですか? あなたは何をお勧めします?

0 投票する
1 に答える
581 参照

macos - Mac OS X の kqueues: イベントの順序がおかしい

kqueues/kevent(2) を使用して、別のスレッドでファイルの変更を監視します。(再解析のためにPythonファイルを監視しています)

私は次のように購読します:

Vim を使用してファイル "/tmp/somefile.py" に書き込むと、2 つの別個の kevent を取得します。これらのイベント (event.fflags) のフラグは次のとおりです。

「NOTE_WRITE」イベントは発生しません。これは、Vim がこれらのファイルを書き込む方法と関係があるようです。

私は得る:

イベント。

変ですよね?Vim のソース コードはチェックしていませんが、何かおかしなことをしているに違いありません。

私は本当にこれを期待していませんでした。これは既知の問題ですか、考えられるすべてのイベントを確認する必要があるだけですか、それとも、ファイルが書き込まれたかどうかを実際に確認する既知のインターフェイスはありますか?