cd — chdir () в C ++: ошибки при получении

Я пытаюсь запустить минимальную программу оболочки терминала через сокет на Unix-машине. Когда я использую system("cd directory") это не работает Поэтому я провел небольшое исследование и наткнулся на chdir(), который выглядел так, как будто это будет работать. Однако, когда я попробовал это, он каждый раз давал мне ошибки. Вот мой код:

if (chdir(argument) < 0) {
send(sock, "[*] Directory does not exits!\n", strlen("[*] Directory does not exits!\n"), 0);
}
else {
string argumentString(argument);
string entireMessage = "[*] New working directory: " + argumentString;
char entireMessageChar[64];
int i;
for (i = 0; entireMessage[i] != '\0'; i++) {
entireMessageChar[i] = entireMessage[i];
}
send(sock, &entireMessage, strlen(entireMessageChar), 0);
}

Может кто-нибудь, пожалуйста, скажите мне, почему chdir() не меняет каталоги?
Благодарю.

0

Решение

Значение errno после chdir() выход должен быть проверен, чтобы определить, почему он не работает.

Возможные значения состояния выхода включают в себя:

  • EACCESS (нет разрешения для цели)
  • ENOENT (файл не существует)
  • ENOTDIR (цель — это файл, а не каталог).

Обратитесь к документации по реализации вашей операционной системы для получения полного списка.

2

Другие решения

Других решений пока нет …