Linux 内核的 current

1. 进程结构体

task_struct 是描述 Linux 进程的一个结构体,记录着进程的信息

cpp 复制代码
// include/linux/sched.h
struct task_struct {
	volatile long state;	/* -1 unrunnable, 0 runnable, >0 stopped */
	void *stack;
	atomic_t usage;
	unsigned int flags;	/* per process flags, defined below */
	unsigned int ptrace;
	.....
	.....
#ifdef CONFIG_UPROBES
	struct uprobe_task *utask;
#endif
#if defined(CONFIG_BCACHE) || defined(CONFIG_BCACHE_MODULE)
	unsigned int	sequential_io;
	unsigned int	sequential_io_avg;
#endif
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
	unsigned long	task_state_change;
#endif
};

2. current

current 宏其实就是静态函数 get_current()。它的返回值是一个 struct task_struct

c 复制代码
static inline struct task_struct *get_current(void)
{
	return current_thread_info()->task;
}

#define current get_current()

通过调用 current,我们可以获取当前的进程的信息:

  • current->comm: 进程的名字
  • current->pid: 进程的 pid
  • 等等
相关推荐
陆伟峰(云固件作者)几秒前
Linux Mint 22.3:给初学者的第一份 Linux 说明书
linux·运维·服务器
水饺编程25 分钟前
第5章,[标签 Win32] :获取设备环境的信息
c语言·c++·windows·visual studio
lhbian26 分钟前
C++、C与易语言:编程语言对比解析
c语言·开发语言·c++
꧁细听勿语情꧂27 分钟前
数据结构概念和算法、时间复杂度、空间复杂度引入
c语言·开发语言·数据结构·算法
顺风尿一寸29 分钟前
深入 Linux 6.8.12 内核:x86_64 系统调用的快速路径与安全博弈
linux
齐潇宇34 分钟前
Docker概述与安装
linux·运维·docker·容器
小堃学编程1 小时前
【项目实战】基于protobuf的发布订阅式消息队列(4)—— 服务端
c语言·c++·vscode·消息队列·gtest·protobuf·muduo
三品吉他手会点灯1 小时前
C语言学习笔记 - 3. C概述 - C语言的起源和发展
c语言·笔记·学习
沉默中爆发的IT男2 小时前
BGP基础配置实验总结
linux·服务器·前端
爱莉希雅&&&2 小时前
MySQL MGR 组复制 完整笔记
linux·数据库·笔记·mysql·mgr·数据库同步