Skip to content

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));
    ...

다음 명령으로,

$ netstat -anp | grep a.out

다음과 같이 표시:

(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

Favorite site