我正在开发一个项目,我需要知道调用系统调用的可执行文件的当前工作目录。我认为有可能像open
这样的系统调用会利用这些信息。
请告诉我如何在字符串中获取当前工作目录路径?
答案 0 :(得分:10)
您可以查看如何实施getcwd
系统调用以了解如何执行此操作。
该系统调用位于fs/dcache.c
并调用:
get_fs_root_and_pwd(current->fs, &root, &pwd);
root
和pwd
是struct 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;
}
如果您想知道可执行文件所在的目录,您可以合并getenv
和argv[0]
中的信息。