c++ - 如何在同一个线程中运行 iostream 系统命令?
问题描述
我正在尝试使用来自 Unreal Engine C++ 的 std::system 执行命令
FString command = FString("start /B cmd /k python \"D:/app.py\"");
std::string comm(TCHAR_TO_UTF8(*command));
std::system(comm.c_str());
该命令本身按预期工作,但是,我需要它在当前线程上执行,或者在继续之前检查它是否已完成,因为下一个操作取决于此命令的完成
有没有办法做到这一点?或者我应该使用另一个命令?
谢谢,伊甸园
解决方案
在您执行的命令完成运行之前, std::system函数不会返回。
同样在 Windows(您似乎正在运行)上,然后system
将调用命令解释器 ( cmd
) 来执行命令,这意味着您要执行的命令必须在命令解释器中PATH
(或者是命令解释器的内部命令) .
如果python
在 中PATH
,那么您可以python
直接运行命令,而无需使用start
or cmd
(尤其是从那时起您将有两个正在运行的实例cmd
),并且该函数将阻塞并且在命令完成运行system
之前不会返回:python
FString command = FString("python \"D:/VRoscopy_repo/VRoscopy/conversion/invesalius3-master/app.py\" --no-gui -i \"D:\VRoscopy_repo\DICOM\Human\MedDream\Body\" -t 200,3033 -e \"D:\VRoscopy_repo\DICOM\Human\MedDream\Body/VRoscopy27777BED4B650CE6AFE884B365C56BCC.stl\"");
推荐阅读
- postgresql - 子查询方程左边部分和右边部分一样,为什么?
- javascript - JavaScript 中动态生成的 LinkedIn 分享按钮
- python - 如何从 Python 中的字符串列表中获取最多重复出现的单词?
- java - IndexOutOfBound Java 异常无法分析错误
- ios - Xcode 12.2:调试器不使用断点
- sqlite - Row_Number() 函数在 sqlite 版本 3.5.1 中不起作用
- javascript - vue.js 中的动态背景图片
- python - 在 macOS BigSur 上使用自制 python 安装 numpy 的问题
- assembly - 终端打印一个“?” x86减法运算中的字符
- nginx - 在 CentOS 7.9 中安装 epel 后没有可用的软件包 nginx