gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:28:53 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

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

关于C++ _popen()/system() 在 Windows 上运行连续命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18132357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com