所以我正在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
就是我一直在寻找的。