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

C++ _popen() / system() running consecutive commands on windows

本文关键字:popen system C++ windows 运行 连续 命令      更新时间:2023-10-16

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

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

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

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

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

popen中运行"cd"不起作用的原因是它只会更改CURRENT进程中的目录。对父进程进行更改会导致各种各样的问题。

当然,您可能需要截取一些其他内容,例如"set"(用于环境变量)。

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