그래서 저는 Linux에서 시스템 호출을 작성하고 있습니다. 다음과 같은 메시지를 인쇄하고 싶습니다.
printk(KERN_DEBUG "PROC_DEBUG [%s, %s]: %s", executable, current->pid, message);
여기서 실행 파일은 시스템 호출을 호출하는 데 사용되는 라이브러리에 소스 파일을 연결할 때 생성되는 실행 파일의 이름입니다. 따라서 "cc -o <program_name> sourcefile.c -L ./a -lfilename" 명령을 실행하면 <program_name>이 인쇄하려는 실행 파일입니다. (pid는 실행 파일을 실행 중인 프로세스의 프로세스 ID이고, message는 시스템 호출에 전달한 매개변수입니다.)
이 코드를 사용하여 실행 파일 이름을 얻으려고 합니다.
struct task_struct *task = get_current();
char task_com[TASK_COM_LEN];
get_task_com(task_com, task);
하지만 선언되지 않은 "TASK_COM_LEN" 오류가 발생하는데, 무엇을 놓치고 있는 걸까요?
실행 파일 이름을 얻는 더 쉬운 방법이 있습니까? "현재->실행 가능"과 같은 것입니까? 온라인에서 좋은 일치 항목을 찾을 수 없습니다.
답변1
current->com
내가 찾던 것이 바로 나에게 떠올랐다 .