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つのプロセス間でファイル記述子を送信するには?