1

我想在 linux 内核(内核空间)中检索当前进程的 sessionid。我看到task_struct有一个字段sessionid,但仅在宏CONFIG_AUDITSYSCALL打开时才定义。所以我试图用这个宏构建内核,但我仍然没有得到结果。我也尝试从CONFIG_AUDITSYSCALLon函数中获取它的值,audit_get_sessionid(current)但得到的是 -1 或垃圾值(与 getsid(0)用户空间中的方法不同)。

在这一点上我很震惊。任何建议都会有很大帮助。

4

2 回答 2

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。

于 2012-05-02T23:01:19.683 回答
0

pid_vnr(task_session(current)); 会做你想做的!

于 2012-05-03T15:02:49.243 回答