Abstract Domain Socket
사용/확인 방법
unix domain socket 을 쓸 때, 실제 파일 경로를 사용하지 않아도 된다는 뜻입니다. 이 경우에는, 그냥 파일이 아닌 그냥 이름(name) 으로 취급되는데.. (abstract domain socket) /proc/net/unix
파일을 열어 보거나, netstat 명령으로 봤을 때, 파일명 앞에 @를 붙여서 구별해 준다는 뜻이죠.
쓰는 방법은 sockaddr_un 구조체의 sun_path
에서 첫번째 바이트를 '\0'
으로 넣어주고, 그 뒤에 파일의 경로를 적어 주면 됩니다.
struct sockaddr_un serveraddr;
bzero(&serveraddr, sizeof(serveraddr));
serveraddr.sun_family = AF_UNIX;
serveraddr.sun_path[0] = '\0';
strcpy(&serveraddr.sun_path[1], "/path/to/non-exist");
ret = bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
...
다음 명령으로,
다음과 같이 표시:
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
unix 2 [ ] DGRAM 189653 3374/a.out @/path/to/non-exist
unix(7) 의 man page 에서 Address Format 섹션의 abstract 부분을 보세요. (man -7 unix
)
See also
- Unix Domain Socket (UDS)
- gRPC -
unix-abstract:
스키마로 지원한다.