使用C++对多个system()命令进行排队
Queue multiple system() commands using C++
我有一个程序,每次需要使用我的10个处理器执行100次不同的参数。
所以基本上我想做多个系统调用,以便完成我的列表。然而,如果我只是把system()放在for循环中,它将只使用一个处理器,并且会一个接一个地运行。我如何打开多个终端,这些终端可以同时运行不同的程序,并在结束时报告它们已完成,使我能够从池中为特定处理器分配新任务?
提前感谢
您应该了解fork
、exec
和wait
系统调用。
原则上,您为每个子流程进行fork
/exec
组合,并记录其PID。当所有进程都在运行时,请使用wait
或变体来等待完成。然后,您可以处理返回值,启动另一个进程等。
我建议您改用popen()
。system()不是一个好的选择。您可以打开任意数量的流(在合理的范围内),并独立地与每个进程进行通信。popen()包装fork+pipe+exec,进程将由操作系统调度,与父进程无关。
或者考虑使用fork/exec实现您自己的。您可以使用waitpid等来检查单个PID的状态,以了解它们的退出代码,尽管我喜欢使用popen(),通过解析程序的文本返回消息来获得更丰富的反馈。
相关文章:
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 使用QProcess执行命令,并将结果存储在QStringList中
- 数组长度,为什么从命令行获取时不能使用它?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- clang整洁10忽略了我的NOLINT命令
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 如何使用ESP8266向谷歌主页发送命令
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- Gstreamer 管道从命令 lne 到 c 代码
- 是否有任何本机 gtkmm 类可以从小部件的信号处理程序函数中排队命令/数据
- 使用C++对多个system()命令进行排队