【发布时间】:2013-08-07 18:17:31
【问题描述】:
我正在尝试通过 unix 机器上的套接字运行一个最小的终端 shell 程序。当我使用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() 不改变目录?
谢谢。
【问题讨论】:
-
如果不知道确切
chdir()的返回码是什么,就无法判断。你不能在检查它是否为非零之后就扔掉它,所以现在,这个问题没有包含足够的信息来提供有用的答案。 -
好的,等一下,我会得到代码的。
-
顺便说一句——
system("cd directory")不起作用的原因是system()启动了一个shell; shell 切换到新目录,然后 shell 退出。您启动了更改其目录的子进程并不意味着 您的 目录更改。 -
@CharlesDuffy 感谢您提供的信息
-
-1 可能源于在提出问题之前没有充分研究问题。
chdir()有文档,我们绝对没有告诉您其中没有任何内容。如果您已经证明自己做出了合理的努力来调试问题,那么事情可能会更受欢迎。 (没有将代码修剪到最低限度,显示您的确切输入等也有贡献)。