current-> pid如何为linux工作?

时间:2012-05-31 17:26:04

标签: c linux process

我是否需要加入图书馆? 任何人都可以详细说明吗?

我知道用于从

中获取当前任务的进程ID

但我想用current-> pid打印一些东西

printk("My current process id/pid is %d\n", current->pid);

......并且给我一个错误

error: dereferencing pointer to incomplete type

3 个答案:

答案 0 :(得分:13)

您正在寻找#include <linux/sched.h>。这就是声明task_struct的地方。

答案 1 :(得分:7)

您的代码应该有效。你可能错过了一些标题。

currentlinux/arch/x86/include/asm/current.h中定义的per-cpu变量(所有代码都是针对x86的情况):

DECLARE_PER_CPU(struct task_struct *, current_task);
static __always_inline struct task_struct *get_current(void)
{
    return percpu_read_stable(current_task);
}
#define current get_current()

current指向在给定时刻在CPU上运行的任务。其类型为struct task_struct,并在linux/include/linux/sched.h中定义:

struct task_struct {
    ...
    pid_t pid;   // process identifier
    pid_t tgid;  // process thread group id
    ...
};

您可以在Linux Cross Reference

中浏览这些文件的代码

答案 2 :(得分:-3)

我认为您正在寻找getpid()系统调用。我不知道current是什么。