我一直在努力创建一个用于Unix的C远程shell。我能够连接到服务器并将命令关闭。然而,我无法改变我的密码,即使似乎正常运行。我给它一个目录,如果该目录不存在,我会收到一个错误。下面是我测试过的快速外壳。无法更改远程shell的目录
while(1)
{
for(n = 0; n < BUFFER_SIZE; n++)
{
command[n] = '\0';
}
write(sockfd, buffer, strlen(buffer));
read(sockfd, command, BUFFER_SIZE);
fprintf(stderr, "Command: %s\n", command);
dup2(sockfd, 2);
dup2(sockfd, 1);
dup2(sockfd, 0);
execlp("/bin/sh", "sh", "-c", command, (char *)NULL);
}