Ser*_*jev 3 c++ unix linux gcc posix
我正在编写一个程序(遗传算法实现),它使用"系统"方法执行另一个程序来计算适应度.问题是另一个程序有时会挂起无限的时间.如何从C++中执行一些有时间限制的程序.
POSIX和c ++解决方案都很受欢迎.或多或少这将在应用程序运行后因此解决方案不一定非常优雅.
我正在运行Linux CentOS发行版并在Cygwin上进行测试.对于编译器,我使用gcc 4.1.2和boost库.
任何帮助都是相关的
Fre*_*Foo 6
而不是system使用fork/ execidiom 执行程序.在之前exec,在子项中设置RLIMIT_CPU为最大值setrlimit.
system
fork
exec
RLIMIT_CPU
setrlimit
确保孩子不要忽视SIGXCPU(这是不太可能的).
SIGXCPU
Err*_*ata 6
您可以创建一个计时器(例如使用boost计时器),然后尝试终止子进程...这假设您使用fork和exec来启动所有子进程,并且您存储了每个pid.
归档时间:
14 年,8 月 前
查看次数:
1136 次
最近记录: