从内核的角度看Linux
task_struct结构体的具体意义
struct task_struct有保存有关线程/进程中的一切信息,主要包括有线程/进程状态、与其他线程/进程关系、虚拟内存相关、日志相关、线程/进程限制等。该结构体定义在include/linux/sched.h文件中,感兴趣可以详细阅读
全局pid和tgid保存在task_struct结构体中。
pid_t一般为int型,即可以同时使用2^{32}不同标识的id。
pid用于标识不同进程和线程。
tgid用于标识线程组id
在同一进程中的所有线程具有同一tgid。tgid值等于进程第一个线程(主线程)的pid值。接着以CLONE_THREAD来调用clone建立的线程,都具有同样的tgid。
group_leader 线程组中的主线程的task_struct指针。
struct task_struct {
...
pid_t pid;
pid_t tpid;
...
struct *group_leader
}