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