我有一个C程序,在Linux上执行,解决'Hanoi_Towers'问题,有n个元素,有一个迭代的解决方案。
这个程序在n = 30之前都能正常工作,对于n = 30,它需要3分钟左右。
然而对于更大的n,比如 n = 35
程序运行10分钟后就崩溃了。
我如何告诉Linux shell,让程序运行到解决问题所需的时间?
你可以忽略SIGXCPU信号。
signal(SIGXCPU, SIG_IGN);
但这只能为你多争取一点时间. SIGXCPU在你到达CPU软极限时开始,SIGKILL(你不能忽略)在你到达CPU硬极限时发生。
但是你要检查CPU限制是否低,是否可以增加。在bash中,你可以用 ulimit -t
并改变它,你可以。
在程序上,你可以改变 RLIMIT_CPU
通过 setrlimit
.
然而,如果CPU限制是由管理员在整个系统中或为特定的用户设置的(例如:参数),你需要超级用户权限来改变它。sysctl
参数),你就需要超级用户权限来改变它。