동적 링커를 통해 모든 프로세스에서 일부 시작 코드를 실행하려고 합니다.
코드는 프로세스의 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번째 인수의 이름인 것으로 보입니다.
(누군가 더 나은 답변을 제공할 경우를 대비하여 여기에 질문을 보관하겠습니다).