エラー: 'struct msghdr'には 'msg_accrights'というメンバーがありません。 Cプログラムをコンパイルしたときに表示されるメッセージ。

エラー: 'struct msghdr'には 'msg_accrights'というメンバーがありません。 Cプログラムをコンパイルしたときに表示されるメッセージ。

Sun Solaris から RHEL に移行します。ところで、Cプログラムをコンパイルすると、以下のようなエラーが出ます。

struct msghdr msg;

    msg.msg_accrights = (caddr_t)&fd_to_send;
    msg.msg_accrightslen = sizeof(int);

error: 'struct msghdr' has no member named 'msg_accrights'

error: 'struct msghdr' has no member named 'msg_accrightslen'

Linux設定はカーネル2.6.18-419.el5を実行します。

答え1

あなたのSolarisコードは4.3BSDスタイルのメッセージを使用します。4.4BSDスタイルメッセージ、そしてmsg_controlそしてmsg_controllenそしてstruct cmsg変えるmsg_accrights

次の方法を使用してファイル記述子を渡すには、コードを変更する必要があります。sendmsg()を使用してソケットを介して2つのプロセス間でファイル記述子を送信するには?

関連情報