如何在同一个线程中执行运行 iostream系统命令?

How to run iostream system command in the same thread?

我正在尝试使用来自 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());

命令本身按预期工作,但是,我需要它在当前线程上执行,或者在继续之前检查它是否完成,因为下一个操作取决于此命令的完成

有办法吗?或者我应该使用另一个命令?

谢谢,伊甸园

在您执行的命令完成 运行ning 之前,std::system 函数不会 return。

同样在 Windows(你似乎是 运行ning)然后 system 将调用命令解释器 (cmd) 来执行命令,这表示您要执行的命令必须在命令解释器中PATH(或者是命令解释器的内部命令)。

如果 pythonPATH 中,那么您可以直接 运行 python 命令,而无需使用 startcmd (特别是从那以后你会有 twocmd 运行ning 的实例),并且 system 函数会阻塞而不是 return直到 python 命令完成 运行ning:

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\"");