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
errnoafterchdir()has exited needs to be checked to determine why it doesn't work.Likely exit status values include:
Check the documentation for your operating system's implementation for a complete list.