如何在同一个线程中执行运行 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
(或者是命令解释器的内部命令)。
如果 python
在 PATH
中,那么您可以直接 运行 python
命令,而无需使用 start
或 cmd
(特别是从那以后你会有 two 个 cmd
运行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\"");
我正在尝试使用来自 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
(或者是命令解释器的内部命令)。
如果 python
在 PATH
中,那么您可以直接 运行 python
命令,而无需使用 start
或 cmd
(特别是从那以后你会有 two 个 cmd
运行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\"");