Как достичь расширения тильды в C? - программирование
Подтвердить что ты не робот

Как достичь расширения тильды в C?

chdir("~/"), похоже, не работает. Должен ли я смотреть на строку и подставлять тильду вручную, или есть лучший способ?

4b9b3361

Ответ 1

POSIX предоставляет wordexp(3) для выполнения расширения оболочки, включая расширение тильды.

Ответ 2

Вы можете использовать wordexp пример ниже

#include <stdio.h>
#include <wordexp.h>

int main(int argc, char* argv[]) {
    wordexp_t exp_result;
    wordexp(argv[1], &exp_result, 0);
    printf("%s\n", exp_result.we_wordv[0]);
}

Ответ 3

Тильда в пути - это конкретная оболочка. Что вы можете увидеть, если первый символ - тильда и косая черта (или конец тильды строки), затем замените тильду значением переменной окружения HOME (которую вы можете получить из getenv).

Если второй символ не является косой чертой, он, скорее всего, имеет вид ~user/path. Затем вам нужно извлечь имя пользователя и использовать, например. getpwnam, чтобы получить пароль пользователя, который содержит этот домашний каталог пользователей.