【发布时间】:2012-01-12 02:04:19
【问题描述】:
我正在做一个项目,我需要知道调用系统调用的可执行文件的当前工作目录。我认为这是可能的,因为像open 这样的一些系统调用会利用这些信息。
您能告诉我如何在字符串中获取当前工作目录路径吗?
【问题讨论】:
标签: linux directory linux-kernel
我正在做一个项目,我需要知道调用系统调用的可执行文件的当前工作目录。我认为这是可能的,因为像open 这样的一些系统调用会利用这些信息。
您能告诉我如何在字符串中获取当前工作目录路径吗?
【问题讨论】:
标签: linux directory linux-kernel
您可以查看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)
这似乎就是你所追求的。
【讨论】:
struct path。我是否误解了你的问题,而你实际上并没有编写内核代码?
get_fs_pwd 的其他用法。
你如何在终端中做到这一点?您使用pwd 查看名为PWD 的环境变量。
#include <stdlib.h>
int main(int ac, char **av) {
printf("%s\n", getenv("PWD");
return 0;
}
如果您想知道可执行文件位于哪个目录,您可以结合来自getenv 和argv[0] 的信息。
【讨论】: