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语言·笔记·学习
秃头摸鱼侠17 分钟前
OpenClaw 入门到实战:安装、配置、使用、升级与卸载(Windows/macOS/Linux)
linux·windows·macos
小趴蔡ha17 分钟前
Win11/Win10 使用 VMware 17.5 安装 Ubuntu 22.04 详细教程(附安装包与密钥下载)
linux·运维·ubuntu
代码AC不AC18 分钟前
【Linux】进程间通信
linux·进程间通信·匿名管道
AMoon丶19 分钟前
Golang--协程调度
linux·开发语言·后端·golang·go·协程·goroutine
Genevieve_xiao20 分钟前
【写给新人】在 vscode 中配置适用于算法竞赛背景的 c/c++
c语言·vscode·算法
小小的木头人26 分钟前
Ubuntu 20版本中破坏: libgcc-s1冲突
linux·运维·ubuntu
小川zs1 小时前
OpenClaw Gateway 频繁断开/重启问题诊断
linux·服务器·gateway
AMoon丶1 小时前
Golang--锁
linux·开发语言·数据结构·后端·算法·golang·mutex
程序员一点1 小时前
第23章:备份与灾难恢复策略
linux·运维·网络·数据库·openeuler