chdir
принимает строковый аргумент с путем для изменения. Он не выполняет никакой другой специальной обработки (переменные среды или home или что-то еще), поэтому вам, если вы хотите что-то из этого, нужно создать строку для передачи в нее.
chdir("/existingDirectory");
, которые изменяются на и существующий каталог в каталоге root - он имеет абсолютный путь. Так что это должен быть один из каталогов, которые вы видите при запуске ls /
.
chdir("exisitingDirectory");
изменится на существующий подкаталог текущего директора.
Если вы хотите изменить на подкаталог вашего домашнего каталога, вам нужно что-то вроде:
char path[PATH_MAX];
sprintf(path, "%s/%s", getenv("HOME"), "subdir");
chdir(path);