在没有unistd.h的情况下获取当前进程的进程ID

时间:2009-02-09 22:51:46

标签: linux linux-kernel kernel

我正在研究死锁检测算法,我只给了内核级库,即#include <linux/somelibrary>而没有别的。是否有内核级设施允许我将当前流程的pid与getpid()unistd.h类似?

2 个答案:

答案 0 :(得分:7)

我做了一些快速的研究,我找到了答案。非常感谢你的指导。我使用的快速代码是:

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

再次感谢!

答案 1 :(得分:4)

这个问题没什么意义。

您在编写基于内核的代码吗?在这种情况下,您可以使用“当前”宏来获取当前任务的pid,该宏指向当前任务的任务结构(其中包含具有pid的成员)。只有当你的内核代码在“当前任务”有意义的上下文中运行时(即不是中断,tasklet等),这才有效。

如果您正在编写用户空间代码,则没有理由不能调用getpid,这是来自unistd.h(或其中包含的内容)中定义的C库的库调用,这会调用系统。如果有这样的原因,请解释一下。

在Linux中进行系统调用并不是特别困难,但确实涉及您不想编写的特定于体系结构的代码。