1

Linux カーネル (カーネル空間) で現在のプロセスのセッション ID を取得したい。task_structフィールドがあるのを見ましたが、マクロがオンsessionidの場合にのみ定義されます。CONFIG_AUDITSYSCALLそこで、このマクロをオンにしてカーネルをビルドしようとしましたが、それでも結果が得られませんでした。CONFIG_AUDITSYSCALLまた、 onを使用して関数から値を取得しようとしましaudit_get_sessionid(current)たが、-1 またはジャンク値 ( getsid(0)ユーザー空間のメソッドとは異なります) のいずれかを取得していました。

この時点で心打たれます。どんな提案でも大いに役立ちます。

4

2 に答える 2

3

getsidここで syscall を見ることができます: 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(タスク_セッション(現在)); あなたが望むことをするだろう!!

于 2012-05-03T15:02:49.243 に答える