获取内核代码中的当前工作目录

时间:2011-12-03 08:40:44

标签: linux directory linux-kernel

我正在开发一个项目,我需要知道调用系统调用的可执行文件的当前工作目录。我认为有可能像open这样的系统调用会利用这些信息。

请告诉我如何在字符串中获取当前工作目录路径?

2 个答案:

答案 0 :(得分:10)

您可以查看如何实施getcwd系统调用以了解如何执行此操作。

该系统调用位于fs/dcache.c并调用:

get_fs_root_and_pwd(current->fs, &root, &pwd);

rootpwdstruct path个变量,

该函数被定义为include/linux/fs_struct.h中的内联函数,其中还包含:

static inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd)

这似乎就是你追求的目标。

答案 1 :(得分:0)

你如何在终端上做到这一点?您使用pwd查看名为PWD的环境变量。

#include <stdlib.h>

int main(int ac, char **av) {
    printf("%s\n", getenv("PWD");

    return 0;
}

如果您想知道可执行文件所在的目录,您可以合并getenvargv[0]中的信息。