Я знаю, как получить имя пути CWD через функцию getcwd
, и я использую функцию strtok
для получения имени каталога (означает текущую рабочую папку), есть ли что-нибудь доступное для получения этой вещи через простой запрос или функцию?
Если getcwd()
возвращает "/this/is/my/cwd"
и вы хотите просто "cwd"
вы можете использовать basename()
для того, что было возвращено getcwd()
.
#include <unistd.h> /* for getcwd() */
#include <libgen.h> /* for basename() */
[...]
char cwd[PATH_MAX] = "";
char * cwd_base = NULL;
if (NULL == getcwd(cwd, sizeof(cwd)))
{
perror("getcwd() failed");
}
else
{
cwd_base = basename(cwd);
}
if (NULL != cwd_base)
{
printf("The current working directory base name is '%s'.\n", cwd_base);
}
Я бы использовал strrchr()
используя разделитель каталога платформы, а не strtok()
.
Конечно, "текущая рабочая папка" обычно должна быть полным абсолютным путем, чтобы быть полезной для доступа к файловой системе.
Используйте все, что пригодится:
В этом конкретном случае все они достаточно просты в использовании. И если вы используете так много, включите его в подпрограмму "помощник".
getcwd
дает путь к каталогу. Вы ищете realpath (3) ?/usr/bin/sort
, basename вернет вам sort.