Получение текущего рабочего каталога в коде ядра - PullRequest
4 голосов
/ 03 декабря 2011

Я работаю над проектом, в котором мне нужно знать текущий рабочий каталог исполняемого файла, который вызвал системный вызов. Я думаю, что это было бы возможно, поскольку некоторые системные вызовы, такие как open, использовали бы эту информацию.

Не могли бы вы рассказать, как я могу получить текущий путь к рабочему каталогу в строке?

Ответы [ 2 ]

10 голосов
/ 03 декабря 2011

Вы можете посмотреть, как реализован системный вызов 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)

, и это, кажется, то, что вы естьпосле.

0 голосов
/ 03 декабря 2011

Как вы это делаете в терминале? Вы используете pwd, который просматривает переменную окружения с именем PWD.

#include <stdlib.h>

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

    return 0;
}

Если вы хотите знать, в каком каталоге находится исполняемый файл, вы можете объединить информацию из getenv и argv[0].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...