如何查找在Linux中发出系统调用的进程的进程ID?

时间:2014-10-26 20:30:16

标签: linux linux-kernel system-calls

我在Linux Kernel中添加了自定义系统调用。现在我想找出发出该系统调用的进程的id。 如果我在系统调用中使用当前指针,我将获得当前正在运行的进程的信息。它可能不是发出系统调用的实际过程,尤其是在多进程环境中。 例如,在用户空间程序中,我有代码。

int pid = fork();
if(pid < 0) {
    <statements>;
} else if(pid == 0) {
    mysystemcall();
}

这只是一个例子。现在我们不知道父进程和子进程的执行顺序。在系统调用中,当前指针可能不指向发出该系统调用的父进程的task_struct。 那么我怎样才能找到这个过程

1 个答案:

答案 0 :(得分:1)

current始终指​​向调用自定义系统调用的进程的task_struct,因此读取并返回current->tgid,因为这将返回调用系统调用的进程的pid。请注意,pid是进程ID,tgid是线程组ID,因此对于重量级进程,由fork()调用,pid == tgid。

相关问题