我有个要求。我的进程必须在代码路径之一期间分叉->执行另一个进程。子进程运行一些检查,当某些条件为真时,它必须自己重新执行。当我在高端机器上进行测试时,它没有造成任何性能问题。
但是,在相同的过程中再次调用execv()会很昂贵吗?特别是当它是exec()自己?
注意:没有第二次涉及叉()。该进程将只是第二次执行execv()本身,以便在其虚拟地址空间中进行映射。
发布于 2015-09-25 15:22:26
第二个execv()调用并不比第一个要昂贵。它甚至可能更便宜,因为系统可能不需要从磁盘读取程序映像,也不需要加载任何新的动态库。
另一方面,简单地在同一个程序中进行分支,execv()的开销要大得多。我很难想象一种情况,在这种情况下,我想要编写一个程序来重新执行它自己(而不是只调用一个函数)。
第三,“便宜”和“昂贵”是相对的。除非你经常这样做,否则你可能不会注意到任何不同之处。
https://stackoverflow.com/questions/32785262
复制相似问题