2013-03-07 5 views
2

는 리눅스 커널의 do_execve_common에 생성하는 것입니다 프로세스의 명령 줄을 얻을 수 있습니까? 즉, argv에서 명령 행을 추출하여 dmesg에 printk하는 방법.커널 : do_execve_common에서 명령 줄 및 pid_parent 가져 오는 중입니까?

둘째,이 PID 및 프로세스의 부모 PID를 얻을 수도 있습니다? 이 정보는 do_execve_common 어딘가에서 사용할 수 있습니까?

나는 만 커널에서 그 일을 할 필요가있다.

답변

3

내가 do_execve 호출하는 시간으로 생각 된 task_struct의 PID & real_parent & 통신 분야는 이미 초기화됩니다.

그래서 당신은 커널 함수를 사용할 수 있습니다 GETPID(), getppid()와 get_task_comm를() 당신이 원하는 것을 얻을 수 있습니다. Linux 커널 버전에이 기능이 있는지 확실하지 않습니다. 그렇지 않은 경우 비슷한 기능이 있어야합니다.

+0

나는 내 질문에 대한 대답이라고 생각하지 않습니다. 예를 들어, getpid는 현재 프로세스의 PID를 반환합니다. 여기서는 커널에 있습니다. 나는 곧 만들어 지거나 막 생성 된 프로세스의 PID를 원합니다. do_execve_common의 마지막 줄에서 정보를 얻는 것이 좋을 것입니다. – gregoiregentil

+0

사과하십시오! 호출은 프로세스의 컨텍스트에 있으므로 sys_getpid가 작동 할 수 있습니다. 나는 여전히 모든 주장을하지 못한다. 나는이 링크 http://www.mail-archive.com/[email protected]/msg00278.html 도움이 될 것이라고 생각하지만 그것은 작동하지 않습니다. 이유를 모르겠다 ... – gregoiregentil

+0

솔루션의 절반 만 제공하지만 (pid는 있지만 인수는 제공하지 않음)이 답변을 표시합니다. linux_binprm에서 argv를 추출하는 방법에 대한 또 다른 질문을 열었습니다. : http://stackoverflow.com/questions/15275594 – gregoiregentil