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
  • 等等
相关推荐
桌面运维家7 分钟前
校园机房vDisk IDV云桌面Linux更新部署方案
linux·运维·服务器
2601_9491942610 分钟前
Redis的安装教程(Windows+Linux)【超详细】
linux·数据库·redis
棋子入局13 分钟前
C语言制作消消乐游戏(4)
c语言·开发语言·游戏
傻啦嘿哟15 分钟前
Python 文件批量处理:重命名/备份/同步运维实战指南
linux·数据库·github
cyber_两只龙宝15 分钟前
【Oracle】 Oracle之SQL的子查询
linux·运维·数据库·sql·云原生·oracle
司南-704931 分钟前
opencode环境搭 并 配置自定义BASE URL
linux·运维·服务器·人工智能
无巧不成书021836 分钟前
Rust开发环境完全指南:Windows/Linux双平台配置与实战
linux·windows·rust·gnu·msvc·mingw-w64安装·镜像配置
流年如夢42 分钟前
自定义类型进阶:联合与枚举
java·c语言·开发语言·数据结构·数据库·c++·算法
Little At Air1 小时前
C++stack模拟实现
linux·开发语言·c++·算法
三品吉他手会点灯1 小时前
C语言学习笔记 - 9.C概述 - 常见问题答疑
c语言·笔记·学习