使用指定的运行超时从C++执行另一个程序

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.

确保孩子不要忽视SIGXCPU(这是不太可能的).


Err*_*ata 6

您可以创建一个计时器(例如使用boost计时器),然后尝试终止子进程...这假设您使用forkexec来启动所有子进程,并且您存储了每个pid.