두 로컬 프로세스가 소켓이나 ipcs를 통해 통신하는지 확인하는 방법은 무엇입니까?

두 로컬 프로세스가 소켓이나 ipcs를 통해 통신하는지 확인하는 방법은 무엇입니까?

P1과 P2라는 두 개의 프로세스가 있습니다. 이러한 프로세스가 소켓이나 다른 프로세스 간 통신 메커니즘을 통해 통신하는지 확인하는 쉬운 방법이 있습니까? 겉보기에 관련이 없어 보이는 두 개의 응용 프로그램이 뒤에서 통신할 수 있기 때문에 이를 알아야 하며 이것이 실제로 사실인지 알고 싶습니다.

답변1

두 프로세스에서 열린 파일 설명자를 사용 lsof -p P1하고 볼 수 있습니다. lsof -p P2그런 다음 각각의 열린 소켓 및 파이프 목록을 보고 동일한 ID가 있는지 확인할 수 있습니다.

imac:barmar $ sleep 100 | sleep 100 &
[1] 51885
imac:barmar $ jobs -l
[1]+ 51884 Running                 sleep 100
     51885                       | sleep 100 &
imac:barmar $ lsof -p 51884 | grep -i pipe
sleep   51884 barmar    1   PIPE 0x491a6929f9ea1ca9     16384          ->0x491a6929f9e9fae9
imac:barmar $ lsof -p 51885 | grep -i pipe
sleep   51885 barmar    0   PIPE 0x491a6929f9e9fae9     16384          ->0x491a6929f9ea1ca9

첫 번째 프로세스의 파이프 대상 ID는 두 번째 프로세스의 파이프 소스 ID와 동일합니다. 이는 동일한 튜브의 두 끝임을 보여줍니다.

관련 정보