C++ 如何指导g++;n秒后停止

C++ 如何指导g++;n秒后停止,c++,g++,flags,C++,G++,Flags,我想知道,在g++中是否有任何限制运行时间的标志选项,比如堆栈大小-stack\u size=any\u limit和错误数-fmax errors=n。假设我想在20秒后停止执行,那么除了在循环时添加,我还可以使用执行相同操作的任何标志。您的问题令人困惑 编译器主要受CPU限制。因此,如果要限制编译时间,请使用ulimit-t20然后,下一个g++命令将在20秒的CPU时间后被终止(使用SIGXCPU)。但是20秒的编译时间是一个很大的数目 您可以考虑使用 -fTealTebug < /C>,

我想知道,在
g++
中是否有任何限制运行时间的标志选项,比如堆栈大小
-stack\u size=any\u limit
和错误数
-fmax errors=n
。假设我想在
20秒后停止执行
,那么除了在
循环时添加
,我还可以使用执行相同操作的任何标志。

您的问题令人困惑

编译器主要受CPU限制。因此,如果要限制编译时间,请使用
ulimit-t20
然后,下一个
g++
命令将在20秒的CPU时间后被终止(使用
SIGXCPU
)。但是20秒的编译时间是一个很大的数目

您可以考虑使用<代码> -fTealTebug < /C>,您可以更准确地将GCC扩展到编译时间。由于GCC是,您甚至可以根据自己的需要对其进行修补(阅读有关它的内容)。采用这种方法,预算可能需要一周或几个月的工作

但是,如果您询问如何要求
g++
编译器神奇地限制生成的可执行文件的执行时间(或运行时间),这不是编译器的事

一种可能是在程序的C++代码中添加一些时间点,测试当前超时。IIRC,政府正在这么做。你可以使用一个预处理器,例如生成这样的C++代码。您可以与您的信号处理程序(read)一起使用一些

volatile sigamatic\t timedout变量,该变量将由某些宏进行测试,例如

#define TEST_TIMEOUT() do { if (timedout) handle_timeout(); } while(0)

然后,在C++代码中的适当位置放置<代码> TestJoTimeOut[2)/Cuff>。雅克·皮特拉特(Jacques Pitrat)的最后一本书提出了这样一种方法

<>你的C++应用程序(也许用OR编码)也可能有一些。然后请参见,以及中记录的自我欺骗

读取由调用的系统调用

关于一般的时间安排,请阅读。在您的特定C++代码中,您可能对使用或(和您可以在开始时调用)感兴趣。 另见


也要注意,和。

可能有兴趣…或
(ulimit-t20;gcc…
@JonathanWakely这是如何工作的?似乎是一个命令,但它没有杀死我尝试的
睡眠
(ulimit-t1;sleep 20)
ulimit-t1
限制了CPU时间,而
睡眠
不会消耗任何CPU时间!