系统调用之getpid
这个函数用于获得线程组的领导线程的pid
其源码分析如下:
SYSCALL_DEFINE0(getpid)
{#这里可以看是当前进程return task_tgid_vnr(current);
}
static inline pid_t task_tgid_vnr(struct task_struct *tsk)
{#走到这一步,就和gettid的实现一模一样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();#这里我们没有指定namespace,因此用当前进程的namespaceif (!ns)ns = task_active_pid_ns(current);#当前进程大部分情况下不为nullif (likely(pid_alive(task))) {#这里形参的type就是__PIDTYPE_TGID,因此if条件成立,最终给type赋值为PIDTYPE_PIDif (type != PIDTYPE_PID) {if (type == __PIDTYPE_TGID)type = PIDTYPE_PID;#得到这个线程组的领导线程task = task->group_leader;}#获取领导线程的pidnr = pid_nr_ns(rcu_dereference(task->pids[type].pid), ns);}rcu_read_unlock();#返回这个pidreturn nr;
}
系统调用之getpid相关推荐
- Linux用getpid函数调试,由表及里之系统调用(getpid)
1.看一段程序 这个程序调用了一个函数getpid(),用于获取当前进程的ID号. #include #include int main() { int id; id=getpid(); printf ...
- [书]操作系统真象还原 -- 第11、12章 用户进程及调度、系统调用、内存管理
====== 第 12 章 系统调用.内存管理 ====== GITHUB: https://github.com/trb331617/os_elephant/tree/master/chapter ...
- linux学习笔记 -- 系统编程
系统编程 相关概念 概念 简易cpu结构 mmu内存管理单元 环境变量 PATH SHELL HOME LANG TERM getenv setenv unsetenv 进程控制 fork函数 get ...
- 【Linux | 系统编程】Linux系统编程(文件、进程线程、进程间通信)
文章目录 Linux系统编程 文件IO open/close函数 read/write函数 文件描述符 阻塞.非阻塞 fcntl函数 lseek函数 传入传出参数 文件系统 文件存储 文件操作 sta ...
- 进程间通信(IPC):信号
文章目录 一.信号的概念 1.信号的生命周期和处理流程 2.信号屏蔽字与未决信号集 3.信号4要素 1) 信号的编号 2)信号名 3)信号触发事件 4)信号默认处理方式 二.信号的产生 1.信号产生的 ...
- linux系统编程(九) 信号
文章目录 1.信号 1.1 信号的概念 1.1.1 信号的机制 1.1.2 与信号相关的事件和状态 1.1.3 信号的编号 1.1.4 信号4要素 1.1.5 Linux常规信号一览表 1.2 信号的 ...
- 《深入理解计算机系统》----总结
第一章 计算机系统漫游 主要内容:主要是全面精炼的概括了本书的内容,也就是"计算机系统概述",包括: a) 解释计算机系统中"信息"的概念:就 ...
- <Linux>进程概念
文章目录 一.什么是进程 1.进程概念 2.进程描述 – PCB 3.task_struct内容分类 二.进程的基本操作 1.查看进程 2.结束进程 3.通过系统调用获取进程标示符 4.通过系统调用创 ...
- 【Linux】进程概念与进程状态
文章目录 一.什么是进程 1.进程概念 2.进程描述 -- PCB 二.进程的一些基本操作 1.查看进程 2.结束进程 2.通过系统调用获取进程标示符 3.通过系统调用创建子进程 三.进程状态 1.普 ...
最新文章
- Java 23种设计模式有趣见解、总结
- Docker的启动与停止命令
- redux provider源码解析
- C语言运算符优先级 (备忘)
- 护肤产生共鸣_通过以人为本的设计编织共鸣的20个指针
- [环境搭建]SDN网络感知服务与最短路径应用
- 【LeetCode 2】两数相加(链表)
- 另一种将线程并入应用程序的方法-委托
- php curl详解用法[真的详解]
- 08.28 JavaScript 边界 选择修饰符 模式单元 修饰符 正则的使用
- php导入跟引入的区别,PHP7 引入的“??” 和“?:”的区别
- 2021会宁三中高考成绩查询,2020白银中考分数线
- flash cs4 是过渡性产品吗?
- 小米手机解锁 usb3.0状态下
- 5.FlashFXP连接失败(连接已拒绝)及530 permission denied(以root用户连接已被客户端关闭)
- MongoDB 分片集群搭建
- Oracle JDK | 迅雷内置浏览器解决 Java 下载需要登录 不能直接复制链接 直接下载慢
- linux usb总线接4g,Linux下4G LTE连接
- 上海市计算机应用大赛答辩,2017年(第九届)上海市大学生计算机应用能力大赛(决赛)在我校成功举办...
- 面试回答问题太紧张,心理有点虚,面完就觉得自己蠢。怎么破!