linux task id,请教关于Linux下的进程管理

1、

/proc/%d/sessionid  这个确实是sessionid

对应内核函数

static ssize_t proc_sessionid_read(struct file * file, char __user * buf,

size_t count, loff_t *ppos)

{

...

length = scnprintf(tmpbuf, TMPBUFLEN, "%u",audit_get_sessionid(task));

...

}

/proc/%d/stat 里面并没有找到什么代表sessionid的东西,不过有一个sid,你可能把sessionid和sid搞混了

对应内核函数

static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,struct pid *pid, struct task_struct *task, int whole)

{

...

sid = task_session_nr_ns(task, ns);

...

seq_printf(m, "%d (%s) %c %d %d %d %d %d %u %lu

%lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu

%lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ldn",

pid_nr_ns(pid, ns),

tcomm,

state,

ppid,

pgid,

sid,

tty_nr,

tty_pgrp,

task->flags,

min_flt,

cmin_flt,

maj_flt,

cmaj_flt,

cputime_to_clock_t(utime),

cputime_to_clock_t(stime),

cputime_to_clock_t(cutime),

cputime_to_clock_t(cstime),

priority,

nice,

num_threads,

start_time,

vsize,

mm ? get_mm_rss(mm) : 0,

rsslim,

mm ? mm->start_code : 0,

mm ? mm->end_code : 0,

(permitted && mm) ? mm->start_stack : 0,

esp,

eip,

/* The signal information here is obsolete.

* It must be decimal for Linux 2.0 compatibility.

* Use /proc/#/status for real-time signals.

*/

task->pending.signal.sig[0] & 0x7fffffffUL,

task->blocked.sig[0] & 0x7fffffffUL,

sigign      .sig[0] & 0x7fffffffUL,

sigcatch    .sig[0] & 0x7fffffffUL,

wchan,

0UL,

0UL,

task->exit_signal,

task_cpu(task),

task->rt_priority,

task->policy,

(unsigned long long)delayacct_blkio_ticks(task),

cputime_to_clock_t(gtime),

cputime_to_clock_t(cgtime));

...

}

所以归根到底你的问题应该是sessionid和sid有什么区别

看内核结构体

struct task_struct {

...

/* namespaces */

struct nsproxy *nsproxy;

...

#ifdef CONFIG_AUDITSYSCALL

uid_t loginuid;

unsigned int sessionid;

#endif

...

}

audit_get_sessionid 直接返回的是task_struct 的sessionid; task_session_nr_ns 返回的是 nsproxy里的pid_ns;

可以看出sessionid 只有在CONFIG_AUDITSYSCALL开启时才会有,sid总是存在,2者并没有什么必然联系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值