我想在linux内核(Kernel Space)中检索当前进程的sessionid。我看到task_struct
有一个字段sessionid
,但只有当宏CONFIG_AUDITSYSCALL
为ON时才定义它。所以我尝试用这个宏构建内核但仍然没有得到结果。此外,我尝试在CONFIG_AUDITSYSCALL
上使用audit_get_sessionid(current)
从函数中获取其值,但是获得了-1或垃圾值(与用户空间中的getsid(0)
方法不同)。
我很震惊。任何建议都会有很大的帮助。
答案 0 :(得分:3)
您可以在此处查看getsid
系统调用:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=kernel/sys.c#l1106
SYSCALL_DEFINE1(getsid, pid_t, pid)
{
struct task_struct *p;
struct pid *sid;
int retval;
rcu_read_lock();
if (!pid)
sid = task_session(current);
else {
...
建议你可以使用内核函数task_session()来获取会话ID。
答案 1 :(得分:0)
pid_vnr(task_session(电流));会做你想要的!!