C ++ _popen()/ system()在Windows上运行连续命令

时间:2013-08-08 17:30:49

标签: c++ windows system popen

我正在处理我的服务器的远程命令提示符。我遇到了_popen()system()的问题,因为一旦命令执行,进程将关闭/启动一个新实例(丢失像Active Directory这样的变量)。我希望能够运行类似的代码。

_popen("cd ..","r");
_popen("cd windwos","r");
_popen("dir","r");

我还需要一种获取输出文本的指针的方法(这就是我开始使用_popen()的原因。我不确定是否可以使用_popen(),或者我需要使用别的什么。

2 个答案:

答案 0 :(得分:1)

要更改目录,您需要在当前进程中执行此操作。所以你可能需要一段大致相同的代码:

if (cmd == "cd" || cmd == "chdir")
{
   chdir(argv[1]); 
}

popen内运行“cd”不起作用的原因是它正在改变CURRENT进程中的目录。对父进程进行更改会导致各种问题。

当然,您可能需要拦截其他一些内容,例如“set”(对于环境变量)。

答案 1 :(得分:0)

只需使用一个命令:dir ..\windows\。或者更详细:cd .. && cd windows && dir