我正在处理我的服务器的远程命令提示符。我遇到了_popen()
和system()
的问题,因为一旦命令执行,进程将关闭/启动一个新实例(丢失像Active Directory这样的变量)。我希望能够运行类似的代码。
_popen("cd ..","r");
_popen("cd windwos","r");
_popen("dir","r");
我还需要一种获取输出文本的指针的方法(这就是我开始使用_popen()
的原因。我不确定是否可以使用_popen()
,或者我需要使用别的什么。
答案 0 :(得分:1)
要更改目录,您需要在当前进程中执行此操作。所以你可能需要一段大致相同的代码:
if (cmd == "cd" || cmd == "chdir")
{
chdir(argv[1]);
}
在popen
内运行“cd”不起作用的原因是它正在改变CURRENT进程中的目录。对父进程进行更改会导致各种问题。
当然,您可能需要拦截其他一些内容,例如“set”(对于环境变量)。
答案 1 :(得分:0)
只需使用一个命令:dir ..\windows\
。或者更详细:cd .. && cd windows && dir