process mngr misc

process mngr misc

PID/TGID/PGID/SID

PID:在ps cmd里显示的pid是进程id,它对应kernel task_struct里的tgid成员。task_struct里的pid_t pid成员是线程id,task_struct里的tgid是thread group id,即主线程的id,也即ps cmd里说的进程id。对于主线程,其task_struct里的pid和tgid成员相等

TGID:进程里主线程的pid,也即ps cmd里的进程id

PGID:多个在工作内容上存在关联的进程组成一个进程组,其中的组长进程的pid为PGID,比如shell下通过管道联系起来的多个cmd就会形成一个进程组。可以通过setpgid()创建进程组

SID:多个进程组组成一个会话。可以通过setsid()创建一个session

thread group leader

thread group leader即进程中的主线程,对于这样的线程,应该是在fork一个新进程时,其在fork时应该是没有CLONE_THREAD flag的,所以其task_struct中的group_leader指向它本身;

如果是在一个进程里创建线程,此时fork时应该是带有CLONE_THREAD flag的,所以此时其task_struct的group_leader成员设置为current->group_leader:

copy_process()     if (clone_flags & CLONE_THREAD) {         p->exit_signal = -1;         p->group_leader = current->group_leader;         p->tgid = current->tgid;     } else {         if (clone_flags & CLONE_PARENT)             p->exit_signal = current->group_leader->exit_signal;         else             p->exit_signal = (clone_flags & CSIGNAL);         p->group_leader = p;         p->tgid = p->pid;     }

 

推荐这些技术文章:

linux bash获取后台进程的id

在 bash 中,下面两个变量有特殊含义

$$ is the current script's pid
$! is the pid of the last background process

#!/bin/bash

./other.sh > /dev/null 2>&1 &
proc_pid=$!
# wait process to be killed
wai...

文章标题:process mngr misc
文章链接:https://www.dianjilingqu.com/3654.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>