【发布时间】:2018-06-24 00:34:40
【问题描述】:
我经常运行运行几天的程序,测试各种标准的连续整数。我想知道一个程序的进度,所以我通常让它打印出一条消息,比如每 100000000 次试验,但如果我可以通过向程序发送信号来获得中间结果,那就太好了。我想到的事情是这样的:
Create signal handler to print out value of n and resume in loop
Register signal handler
n=1
while( 1 ) {
If n fits some criterion, print n
n++
}
我的想法是我可以使用kill -SIGTYPE processid 来获得中间结果。有可能做我想做的事吗?如果是这样,怎么办?我看到的在 C 中使用信号处理的例子似乎都是在处理完信号后立即退出,而不是从信号被捕获的地方恢复。
【问题讨论】:
-
"在处理完信号后立即退出" 取决于您的使用情况,例如
sigaction()...当然可以做你想做的事。只是不要从信号处理程序内部打印,而是使用标志 (volatile sig_atomic_t)。 -
我敢打赌你错过了这个one。
-
在哪个操作系统上?纯标准 C11 对信号是什么以及可以做什么的定义很差。
-
你在写什么样的程序?请编辑您的问题以改进它(激励它,提供更多细节)。
-
没有更多细节:你在什么操作系统上编码?什么样的应用程序? ...您的问题不清楚。