고려하다 /var/run/acpid.socket
. 언제든지 연결하고 연결을 끊을 수 있습니다. 다음과 비교해보세요 nc
:
$ nc -l -U ./myunixsocket.sock
Ncat: bind to ./myunixsocket.sock: Address already in use. QUITTING.
nc
분명히 일회용 소켓만 허용됩니다. 그래서 질문은 /var/run/acpid.socket
여러 용도로 사용하고 재사용할 수 있도록 이와 같은 소켓을 만드는 방법입니다.
답변1
-k
이를 수행하도록 선택할 수 있습니다 nc
.
-k Forces nc to stay listening for another connection after its cur- rent connection is completed. It is an error to use this option without the -l option. When used together with the -u option, the server socket is not connected and it can receive UDP data- grams from multiple hosts.
예:
$ rm -f /tmp/socket # unlink the socket if it already exists
$ nc -vklU /tmp/socket # the server
Connection from mack received!
yes
Connection from mack received!
yes
...
사용 후 소켓을 사용하는 것이 좋습니다 unlink()
. 그러나 실제로 대부분의 프로그램은 소켓이 존재하는지 확인하고 삭제합니다.앞으로이를 호출하십시오 . 파일 시스템에 소켓 경로가 존재하고 이에 액세스하려고 하면 bind()
어떤 프로그램에서도 이를 사용하지 않더라도 bind()
오류가 발생합니다 .EADDRINUSE
Linux에서 이러한 혼란을 피하는 한 가지 방법은 다음을 사용하는 것입니다."추상적인"유닉스 소켓이지만 netcat
.