問題タブ [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.
epoll - libevent への epoll の移植
epoll を使用してサーバーを開発しました。Linux では問題なく動作します。しかし、kqueue を使用して macosx をサポートしたいと考えています。libevent は、これらのイベント ベースのライブラリ (epoll、kqueue) の上にある抽象化レイヤーであると聞きました。
epoll を使用してこのコードを libevent に移植するにはどうすればよいですか? サンプルコード: https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/epoll-example.c可能ですか (%100 互換)?
c - ファイル ポインタの進行が止まっているように見える
sys/inotify.h を使用する Linux から、kqueues を使用する OS X にログ監視プログラムを移植しています。アイデアは、kqueue がファイル記述子を使用してファイルへの変更を監視することです。ファイルが変更されると、別の関数にファイル ポインターが渡され、ファイルへの変更がスキャンされ、特定のデータが検索されます。元のファイル データは stdout に出力され、スキャン対象のデータは stderr に出力されます。kqueues はログを正常に監視しているように見え、変更ごとに正しいバイト数を返します。正常に動作していないように見えるのはスキャン機能です。
kqueue ループ:
scan_log 機能:
scan_log の for ループに入らなくても、このプログラムの Linux バージョンから変更されていません。必要でない場合もあります。
何が起こっているかというと、ログから何も出力されず、stderr または stdout に出力されません。fp の位置を監視するために、scan_log の前後に ftell の呼び出しを使用しています。最初は動きますが、その後は動きません。いずれの場合も、データは stdout/stderr に出力されません。
編集: scan_log() コードを更新して、欠落している fprintf 呼び出しを含めました。
c - kqueue EV_ENABLE および EV_DISABLE の目的は何ですか
kqueue で EV_DISABLE と EV_ENABLE の使用例を理解しようとしています。
現在、 への最後の呼び出しがkevent()
戻ると、ev.udata
代わりNULL
にsomePtr
. kevent()
イベントを有効にするだけでなく、EV_ADD が設定されていなくてもポインターを更新する場合udata
、無効なイベントを追加できるようにする理由は何ですか?
ios - Wi-Fi 接続失敗 iPad
サーバーと通信するアプリを開発しています。多くの場合、アプリを終了して再起動した場合にのみ、通信が切断され、再び機能します。デバイスログから、このエラーメッセージを見つけました
次の投稿を読みましたが、何も理解できませんでした。根本的な原因とこれを修正する方法を教えてください。
macos - kqueue でシグナルを処理するときに siginfo_t を取得する
siginfo_t
でシグナルを処理するときに構造体を取得する方法はありkqueue
ますか? (Linux では、epoll
同様の信号を処理する場合struct signalfd_siginfo
は、から読み取るだけで取得できますsignalfd
)
linux - FreeBSD で非常に大きなディレクトリを監視する最も効率的な方法
私は FreeBSD をインストールしており、10TiB の小さなファイルを含む非常に大きなディレクトリ構造を持っています。
新しいファイルの作成や既存の変更などのイベントをプログラムで監視および処理したいと考えています。使用しようとしましkqueue()
たが、すべてのディレクトリとファイルを開く必要があります。ディレクトリ構造全体をトラバースすると時間がかかりすぎて、十分な時間内に完了することができません。(一晩放置してもうまくいきませんでした。)
FreeBSD で同じことを効率的に行う別の方法はありますか?
ところで、Linux は inotify を使ってそのような量のデータを処理しますか?
ご提案ありがとうございます。