![오류: 'struct msghdr'에는 'msg_accrights'라는 멤버가 없습니다. C 프로그램을 컴파일할 때 나타나는 메시지입니다.](https://linux55.com/image/200861/%EC%98%A4%EB%A5%98%3A%20'struct%20msghdr'%EC%97%90%EB%8A%94%20'msg_accrights'%EB%9D%BC%EB%8A%94%20%EB%A9%A4%EB%B2%84%EA%B0%80%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%20C%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%84%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%ED%95%A0%20%EB%95%8C%20%EB%82%98%ED%83%80%EB%82%98%EB%8A%94%20%EB%A9%94%EC%8B%9C%EC%A7%80%EC%9E%85%EB%8B%88%EB%8B%A4..png)
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()를 사용하여 소켓을 통해 두 프로세스 간에 파일 설명자를 보내는 방법은 무엇입니까?