/proc/net/unix
내 Android 기기에는 who's라는 파일이 있습니다 .콘텐츠 어느 것에도 부합하지 않는다기준Linux 배포판(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_sockets
확인 되었습니다.PID그것을 사용하는 과정입니다.
답변1
이 파일을 생성하는 코드는 unix_seq_show()
함수 에 있습니다.net/unix/af_unix.c
커널 소스 코드에서. 보고 있다include/net/af_unix.h
어떤 데이터 구조가 사용되는지 확인하는 것도 도움이 됩니다.
소켓 경로는 항상 출력의 마지막 열이며안드로이드 커널 소스 코드성냥재고 코어이와 관련하여. 따라서 제가 착각하지 않는 한, 열처럼 보이는 그 숫자는 실제로는 별도의 열이 아닙니다.
총 경로 길이가 108바이트 미만이면 원하는 거의 모든 이름을 UNIX 도메인 소켓에 지정할 수 있습니다. 따라서 이러한 경로가 어떻게 보일지에 대해 어떠한 가정도 할 수 없습니다. 이러한 이름을 선택하는 사용자 공간 코드는 탭 뒤에 숫자를 사용하거나 이름을 공백으로 특정 길이까지 채울 수도 있습니다. 내 이론을 테스트하려면 다음을 살펴보세요 /dev/socket/qmux_radio/
.