我试图通过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()
没有更改目录吗?
感谢。
答案 0 :(得分:2)
需要检查errno
退出后chdir()
的值,以确定其无效的原因。
可能的退出状态值包括:
查看操作系统实现的文档以获取完整列表。