7

MAC OS X の NETLINK Sockets API に相当するものを知っている人はいますか? Linux アプリケーションを MAC OS X に移植しようとしていますが、MACOS で同様のものを見つけることができませんでした。

アプリケーションでネットワーク アダプタへの非同期アクセスを提供する必要があります。

一定の秒数ごとに構成の変更などについてネットワークアダプターをポーリングすることは、私にとって便利なソリューションではありません。NETLINK ソケット API は、何か興味深いことが起こったときにのみ通知を受信する方法を提供します。

NETLINK は Linux カーネルとユーザー空間の間で通信するための Linux 固有のものであることは知っていますが、MACOS の下に NETLINK のようなものが存在する可能性があります。

カーネルと通信する唯一のツールが表示されます – sysctl()

誰か情報を持っていますか?

4

2 に答える 2

4

OSXがその理由で提供するドキュメントのNKEセクションに記載されているカーネル制御アーキテクチャを使用できます。

于 2011-01-08T17:18:38.460 に答える
-3

これを行う従来の方法は、select/poll/epoll/kqueue を使用してソケットでイベントを待機することです。どのプラットフォームで何が最適かについては、この回答を参照してください: select vs poll vs epoll

または、接続ごとに新しいスレッドを生成し、ブロッキング ソケット読み取りを使用します。ただし、これは select/poll/kqueue を介した非ブロック I/O よりもスケーラブルではないことが歴史からわかっています。これは、1990 年代にほとんどの人が最初にネットワーク サーバーを作成する方法でした。コーディング スタイルによっては、ブロッキング I/O + スレッドの方が扱いやすい場合があります。

その名前に反して、epoll はポーリングではないことに注意してください。

于 2010-12-21T12:25:15.797 に答える