gpt4 book ai didi

linux - 无法使用远程 shell 更改目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:46 24 4
gpt4 key购买 nike

我一直在尝试用 C 为 Unix 创建一个远程 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 );

}

最佳答案

cd 不是一个程序,它是一个 shell 内置命令,它更改 shell 的 cwd,而不是生成该 shell 的程序。您正在为每个命令生成一个新的 shell,因此更改后的 cwd 不会持续存在。

您可以 try catch cd 的调用并自己运行 chdir(),或者生成一个交互式 shell 并使用管道或 pty(伪终端)来与它交流。

关于linux - 无法使用远程 shell 更改目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5542607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com