这是我之前的问题的续集.我正在使用fork来创建子进程.在孩子里面,我命令运行一个过程如下:
if((childpid=fork())==0)
{
system("./runBinary ");
exit(1)
}
Run Code Online (Sandbox Code Playgroud)
我的runBinary具有测量从开始到结束所需时间的功能.
令我惊讶的是,当我在命令行上直接运行runBinary时,需要大约60秒.但是,当我将它作为子进程运行时,它需要更多,例如~75或更多.有什么我可以做或目前做错了,这导致了这个?
我在这里先向您的帮助表示感谢.更多细节:我在Linux RHEL服务器上运行,有24个核心.我在测量CPU时间.一次,我只使用taskset(代码中未显示)将8个子节点(顺序)分叉,每个子节点绑定到不同的核心.除我自己的程序外,系统未加载.
system() 函数用于调用 shell。您可以在其中执行任何操作,包括运行脚本。这为您提供了很大的灵活性,但它是有代价的:您正在加载一个外壳,然后在其中运行Binary。虽然我不认为加载 shell 会造成这么大的时间差异(毕竟 15 秒很多),因为你似乎不需要它 - 只是为了运行应用程序 - 尝试使用 exec 中的东西()家庭代替。
| 归档时间: |
|
| 查看次数: |
808 次 |
| 最近记录: |