오류: '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()를 사용하여 소켓을 통해 두 프로세스 간에 파일 설명자를 보내는 방법은 무엇입니까?

관련 정보