我正在编写一个程序(遗传算法实现),该程序使用“系统”方法执行另一个程序来计算适应度。问题在于,另一个程序有时会无限期地挂起。如何从C++开始执行具有一定时间限制的程序。
POSIX和c++解决方案均受到赞赏。或多或少将在应用程序运行一次,因此解决方案不必太优雅。
我正在运行Linux CentOS发行版,并且正在Cygwin上进行测试。对于编译器,我使用带有Boost库的gcc 4.1.2。
任何帮助都感激不尽
最佳答案
代替system
,使用fork
/exec
惯用语执行程序。在exec
之前,将RLIMIT_CPU
设置为最大值,并在子级中添加 setrlimit
。
确保 child 不会忽略SIGXCPU
(这是极不可能的)。