我正在尝试了解系统调用在Linux内核中的工作原理。我有一个问题是,如何检索进行系统调用的进程的pid?
e.g。我正在查看read()
调用(同步读取),我认为这是在 fs / read_write.c 中定义的
ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos)
答案 0 :(得分:8)
在系统调用上下文(调用进程的上下文)中,您可以检查类型为current
的全局变量struct task_struct
,它包含您可以获得的pid
字段来自的pid。
只需执行current->pid
即可获取当前任务上下文的pid。
我假设您的意思是内核中定义的系统调用的实际代码。