리눅스 시스템에서 로컬 추상 소켓에 연결하려고 시도하는 다른 언어로 된 두 개의 프로그램이 있습니다. 둘 중 하나가 실패하고 있습니다. 이유를 결정하는 데 어려움을 겪고 있습니다. 난 단지 strace
출력 수단에서 찾을 수있는 한 가지 차이점을 알고 싶습니다. 그래서 해결할 수 있습니다.strace로 syscall을 연결하는 디버깅 - @ "sun_path"는 무엇을 의미합니까?
[pid 6307] socket(PF_LOCAL, SOCK_SEQPACKET, 0) = 13
[pid 6307] connect(13, {sa_family=AF_LOCAL, sun_path="qwertystop.bus.8"}, 19) = -1 ENOENT (No such file or directory)
세 가지 차이점이있다 :
socket(PF_LOCAL, SOCK_SEQPACKET, 0) = 3
connect(3, {sa_family=AF_LOCAL, [email protected]"qwertystop.bus.8"}, 19) = 0
휴무이 strace
출력을 갖는다 :
워킹 일이 strace
출력 갖는다 휴무 한 복수의 PID와 프로그램이다의 connect
호출의 반환 값은 다르며 sun_path
문자열 앞에 @
이 있습니다. 나는 소켓 연결이 다른 프로세스에 의해 시작 되었기 때문에 프로세스에서 작동하지 않는다는 사실을 거의 인식하지 못하기 때문에 @
이 누락 된 원인이 무엇이든지간에 오류의 원인이 무엇인지 추정합니다. 내가 명시 적으로 나는이 숙제가 대부분 때문이다. 언어를 명시하고 있지 않다 왜, "추상적 인 소켓에 연결"을 일반적인 솔루션을 요구하고 있지 않다 내가 유혹 할 수있는 상황을 만들 거부
(직접 코드 복사).
'@ '기호는 링크 된 문서에 나타나지 않습니다. –
죄송합니다. 난 널 바이트에 대한 이전 답변에서 그 줄 알았는데. 처음에는 null 바이트가 linux-ism이다. [https://superuser.com/questions/381262/linux-init-local-socket-with](https://superuser.com/questions/381262/linux-init-local-socket-with). 내가 불분명하면 죄송합니다. –