0

我正在尝试通过 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()不更改目录?谢谢。

4

1 回答 1

2

需要检查errnoafter has exited的值以确定它为什么不起作用。chdir()

可能的退出状态值包括:

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

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

于 2013-08-07T18:22:54.560 回答