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
  • 等等
相关推荐
算法鑫探3 小时前
闰年判断:C语言实战解析
c语言·数据结构·算法·新人首发
开压路机3 小时前
进程控制
linux·服务器
香蕉鼠片3 小时前
跨平台开发到底是什么
linux·windows·macos
浅时光_c3 小时前
14 结构体 共用体 枚举类型
c语言
bukeyiwanshui5 小时前
20260417 DNS实验
linux
代码中介商5 小时前
Linux 帮助手册与用户管理完全指南
linux·运维·服务器
代码中介商7 小时前
C语言函数完全指南:从基础到实践
c语言·开发语言
hssfscv7 小时前
软件设计师下午试题四——C语言(N皇后问题、分治、动态规划)
c语言·算法·动态规划
weixin_449173657 小时前
Linux -- 项目中查找日志的常用Linux命令
linux·运维·服务器
爱编码的小八嘎8 小时前
C语言完美演绎8-7
c语言