如果我想长时间运行一个程序,如何忽略SIGXCPU信号?

问题描述 投票:0回答:1

我有一个C程序,在Linux上执行,解决'Hanoi_Towers'问题,有n个元素,有一个迭代的解决方案。

这个程序在n = 30之前都能正常工作,对于n = 30,它需要3分钟左右。

然而对于更大的n,比如 n = 35程序运行10分钟后就崩溃了。

我如何告诉Linux shell,让程序运行到解决问题所需的时间?

c linux signals
1个回答
1
投票

你可以忽略SIGXCPU信号。

signal(SIGXCPU, SIG_IGN);

但这只能为你多争取一点时间. SIGXCPU在你到达CPU软极限时开始,SIGKILL(你不能忽略)在你到达CPU硬极限时发生。

但是你要检查CPU限制是否低,是否可以增加。在bash中,你可以用 ulimit -t 并改变它,你可以。

在程序上,你可以改变 RLIMIT_CPU 通过 setrlimit.

然而,如果CPU限制是由管理员在整个系统中或为特定的用户设置的(例如:参数),你需要超级用户权限来改变它。sysctl 参数),你就需要超级用户权限来改变它。

© www.soinside.com 2019 - 2024. All rights reserved.