Netlinkはもともとカーネルとユーザー間の通信を提供するように設計されています。ユーザー空間とユーザー空間のコミュニケーションに使用できない理由はありませんが、なぜそうなったのか分かりません。
あなたが先に進んで使いたい場合は、ユーザー空間でのみ行うことができます。カーネル空間の設定を最初に実行する必要はありません。 AF_NETLINKのソケットファミリを使用してsocket()を呼び出してください。メッセージを送信するには、struct sockaddr_nlに値を設定し、nl_pidプロパティを適切に設定します(通常は現在のプロセスのPIDに設定されます)。次にsendto()を呼び出します。標準のrecv()呼び出しを使用してメッセージを受信できます。
あなたはあなたがLinuxに慣れていないと言いますが、ユーザスペースのIPCニーズに合ったUnixドメインソケットを見ることをお勧めします。また、場合によってはうまくいくメッセージキューを見ることもできます。ここで良い比較があります:Which is better for local IPC, POSIX message queues (mqueues) or Unix domain (local) sockets?。 POSIXメッセージキューを使用するには、リアルタイムライブラリ(librt)にリンクする必要があることに注意してください。メッセージキューを使用する双方向通信は、各方向に1つのキューのペアを使用して簡単に実現できます。
ありがとうございます!コメントを見れば、Unix Domain Socketsが私の場合より良い解決策になるはずです。私はそれを見ていきます。 – HackX123