/proc/self에서 원래 명령 호출 가져오기

/proc/self에서 원래 명령 호출 가져오기

동적 링커를 통해 모든 프로세스에서 일부 시작 코드를 실행하려고 합니다.

코드는 프로세스의 0번째 인수를 기반으로 작업을 수행해야 합니다. 나는 인수를 얻고 있습니다 /proc/self/cmdline(메인 외부에서 액세스하는 더 좋은 방법을 알고 있다면 알려주십시오). 그러나 여기에는 한 가지 문제가 있습니다.

스크립트는 0번째 인수로 shebang( 없이 #!)을 가져오며 이 경우 다음 인수에 관심이 있습니다. 하지만 해석된 프로세스와 기본 프로세스를 어떻게 구별할 수 있습니까?

답변1

추출하려는 세부 정보는 스크립팅 없이 /proc/self/status에서 찾을 수 있습니다 ./proc/self/comm

의도된 질문에 대해: 어떤 프로세스가통역그리고 그것은토종의, 어떤 프로세스가 의도된 것인지 알지 못하면 이 작업을 수행할 수 없습니다.통역사. 결국 모든 프로세스는 호출을 통해 exec결과 프로세스의 인수 목록에 원하는 것을 사용하여 이름을 바꿀 수 있습니다. 당신은 할 수추측하다/proc/self/exe실행 파일을 가리키는)를 인수 목록과 비교 하지만 이는 단지 추측일 뿐입니다. 왜냐하면 인터프리터가 아닌 사람이 더 명확하게 사용하기 위해 하위 항목의 이름을 바꾸는 예가 있기 때문입니다.

추가 자료:

답변2

Name프로세스가 들어오는 것 같습니다 .

</proc/self/status |grep '^Name'

이름은 basename실제 0번째 인수의 이름인 것으로 보입니다.

(누군가 더 나은 답변을 제공할 경우를 대비하여 여기에 질문을 보관하겠습니다).

관련 정보