我想通過unix機器上的套接字運行一個最小的終端shell程序。當我使用system("cd directory")
時,它不起作用。所以我做了一些研究,碰到chdir()
,看起來好像會起作用。但是,當我嘗試它時,它每次都會給我帶來錯誤。這是我的代碼:在C++中的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()
不改變目錄? 謝謝。
不知道_exactly_是什麼'chdir()'的返回碼是不可能的。在檢查它是否爲非零值之後,您不能將其丟棄,因此此時此問題沒有包含足夠的信息來提供有用的答案。 –
好的,等我拿到代碼。 – jamespick
順便說一句 - system(「cd directory」)不起作用的原因是'system()'啓動了一個shell;外殼變成新的目錄,然後外殼退出。你開始一個改變其目錄的子進程並不意味着你的目錄改變了。 –