在windows上运行连续命令的C++_popen()/system()
C++ _popen() / system() running consecutive commands on windows
我正在为我的服务器开发远程命令提示符。我遇到了_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
相关文章:
- 如何在c++中使用system()来运行包含空格的python脚本
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 自动"yes"到 Popen SSH 命令
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- 程序在使用 system() 启动另一个可执行文件时停止
- 为什么我的 DeviceInformation 对象没有 System.Devices.InterfaceClassGuid 属性?
- 为什么"using System;"不被视为不良做法?
- C++ 合并字符串以'system'函数错误
- System.AccessViolationException:shared_ptr C# .NET 和 C++ 应用程
- bash脚本在使用popen()时不返回代码以调用C ++程序
- 将 Vcl::Controls::TCaption aka (System::UnicodeString) 转换为 co
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- Python os.system() 返回错误值
- 使用 system() 函数在C++程序中运行 cmd 命令
- 如何使用 C/C++ 和 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 获取没有叉/exec,popen()和system()的Linux信息
- 在 Linux 上的 C 语言中,popen / system to "ps all > file" 将所有行截断为 80 个字符
- Popen vs . system: Popen和system一样邪恶