博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慢慢欣赏linux 获取进程组id即tgid
阅读量:4069 次
发布时间:2019-05-25

本文共 1601 字,大约阅读时间需要 5 分钟。

#define __NR_getpid 172__SYSCALL(__NR_getpid, sys_getpid)	=>SYSCALL_DEFINE0(getpid)	// sys_getpid - return the thread group id of the current process	{		return task_tgid_vnr(current);		=>pid_t task_tgid_vnr(struct task_struct *tsk)		{			return __task_pid_nr_ns(tsk, __PIDTYPE_TGID, NULL);			=>pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct pid_namespace *ns)			{				pid_t nr = 0;				rcu_read_lock();				if (!ns)					ns = task_active_pid_ns(current);					=>struct pid_namespace *task_active_pid_ns(struct task_struct *tsk)					{						return ns_of_pid(task_pid(tsk));						=>struct pid *task_pid(struct task_struct *task)						{							return task->pids[PIDTYPE_PID].pid;						}						=>struct pid_namespace *ns_of_pid(struct pid *pid)						{							struct pid_namespace *ns = NULL;							if (pid)								ns = pid->numbers[pid->level].ns;							return ns;						}					}				if (likely(pid_alive(task))) {					if (type != PIDTYPE_PID) {						if (type == __PIDTYPE_TGID)							type = PIDTYPE_PID;						task = task->group_leader;					}					nr = pid_nr_ns(rcu_dereference(task->pids[type].pid), ns);					=>pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns)					{						struct upid *upid;						pid_t nr = 0;						if (pid && ns->level <= pid->level) {							upid = &pid->numbers[ns->level];							if (upid->ns == ns)								nr = upid->nr;						}						return nr;					}				}				rcu_read_unlock();				return nr;			}		}			}

Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)

https://kernel.blog.csdn.net/article/details/51383272

内核中current实现

https://www.cnblogs.com/tsecer/p/10487596.html

你可能感兴趣的文章
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret&nbsp;1.1&nbsp;正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>
Jenkins - sonarqube 代码审查
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 单机部署(二)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 高可用集群部署(三)
查看>>
Golang struct 指针引用用法(声明入门篇)
查看>>
Linux 粘滞位 suid sgid
查看>>
C#控件集DotNetBar安装及破解
查看>>
Winform皮肤控件IrisSkin4.dll使用
查看>>