C ++中的chdir()获取错误

时间:2013-08-07 18:17:31

标签: c++ cd chdir

我试图通过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()没有更改目录吗? 感谢。

1 个答案:

答案 0 :(得分:2)

需要检查errno退出后chdir()的值,以确定其无效的原因。

可能的退出状态值包括:

  • EACCESS(目标无权限)
  • ENOENT(文件不存在)
  • ENOTDIR(目标是文件,而不是目录)。

查看操作系统实现的文档以获取完整列表。