Я пытаюсь запустить минимальную программу оболочки терминала через сокет на 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()
не меняет каталоги?
Благодарю.
Значение errno
после chdir()
выход должен быть проверен, чтобы определить, почему он не работает.
Возможные значения состояния выхода включают в себя:
Обратитесь к документации по реализации вашей операционной системы для получения полного списка.
Других решений пока нет …