/ proc / net / unix의 내용의 의미는 무엇입니까?


11

내 안드로이드 장치에는 표준 리눅스 배포판 의 파일과 일치하지 않는 파일 /proc/net/unix있습니다 (유닉스 도메인 소켓을 보여줍니다). 처음 몇 줄 :

Num       RefCount Protocol Flags    Type St Inode Path
00000000: 00000002 00000000 00000000 0002 01 5287581 /data/misc/wifi/sockets/wpa_ctrl_789-3189
00000000: 00000003 00000000 00000000 0001 03    6402 /dev/socket/qmux_radio/qmux_client_socket    297
00000000: 00000002 00000000 00010000 0001 01    7180 /dev/.secure_storage/ssd_socket
00000000: 00000002 00000000 00010000 0001 01    6424 /dev/socket/cnd
00000000: 00000002 00000000 00010000 0001 01    6400 @QMulticlient
...

(1)이 다른 기둥들은 무엇을 의미합니까?


편집 : 좋아 나는 이것을 발견 했다 :

여기서 'Num'은 커널 테이블 슬롯 번호이고 'RefCount'는 소켓 사용자 수이며 'Protocol'은 항상 0이며 'Flags'는 소켓 상태를 보유하는 내부 커널 플래그를 나타냅니다. 현재 유형은 항상 '1'입니다 (Unix 도메인 데이터 그램 소켓은 아직 커널에서 지원되지 않습니다). 'St'는 소켓의 내부 상태이고 Path는 소켓의 바인딩 된 경로입니다 (있는 경우).

그러나 type"내부 상태"의 의미를 명확하게 밝히지 않았으므로 최신 상태가 아닙니다.

(2) 또한 경로의 끝에 열 이름이없는 추가 번호가있을 수 있습니다. 그게 뭐야?

또한 커널 소스 코드의 어디에서 이것이 만들어 지는지 알 수 있습니까?

편집 : 2016-04-27 (해결)

아래 답변 덕분에을 통해 항목 lsof |grep qmux의 마지막 열에있는 숫자가 그것을 사용하는 프로세스 qmux_client_socketsPID 임을 확인했습니다.

답변:


6

이 파일을 생성하는 코드 는 커널 소스unix_seq_show()함수에 있습니다. 보고있는 것도 데이터 구조를 사용하는 데 도움이됩니다.net/unix/af_unix.cinclude/net/af_unix.h

소켓 경로는 항상 출력의 마지막 열이며 Android 커널 소스 는 이와 관련 하여 주식 커널 과 일치합니다 . 따라서 내가 실수하지 않으면 열처럼 보이는 숫자는 실제로 별도의 열이 아닙니다.

전체 경로 길이가 108 바이트 미만인 경우 실제로 원하는대로 UNIX 도메인 소켓의 이름을 지정할 수 있습니다. 따라서 이러한 경로의 모양에 대한 가정을 할 수 없습니다. 해당 이름을 선택하는 사용자 공간 코드가 탭 문자 다음에 숫자를 사용하거나 공백을 사용하여 특정 길이로 이름을 채울 수도 있습니다. 내 이론을 테스트하려면의 소켓 파일을 살펴보십시오 /dev/socket/qmux_radio/.


1
고마워요! /dev/socket/qmux_radio/가상 소켓 오프너 아래에는 소켓 번호가 표시되지 않습니다 qmux_client_socket. 그러나 당신의 도움으로 ps어느 것이 같은지 확인했습니다.
not2qubit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.