0

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

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

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

4

2 回答 2

1

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

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

在里面运行“cd”popen不起作用的原因是它只改变了当前进程中的目录。对父进程进行更改会导致各种问题。

当然,您可能需要截取一些其他的东西,例如“set”(用于环境变量),也许。

于 2013-08-08T17:48:31.057 回答
0

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

于 2013-08-09T07:48:15.767 回答