I am trying to run a minimal terminal shell program through a socket on a unix machine. When I use system("cd directory") it doesn't work. So I did a bit of research and came across chdir(), which looked like it would work. When I tried it, though, it gave me errors every single time. Here is my code:

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);
}

Could anyone please tell me why chdir() isn't changing directories? Thanks.

有帮助吗?

解决方案

The value of errno after chdir() has exited needs to be checked to determine why it doesn't work.

Likely exit status values include:

  • EACCESS (no permission for the target)
  • ENOENT (file does not exist)
  • ENOTDIR (target is a file, not a directory).

Check the documentation for your operating system's implementation for a complete list.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top