gpt4 book ai didi

signals - 在 RPython 中捕获信号

转载 作者:行者123 更新时间:2023-12-04 05:49:08 25 4
gpt4 key购买 nike

如何在翻译的 RPython 程序中捕获信号(特别是/特别是 SIGINT )?

我已经浏览了 PyPy 源代码树,找到了 CPython signal模块,并尝试在翻译的程序中使用它会在翻译过程中产生预期的错误:

[translation:ERROR]  Exception: unexpected prebuilt constant: <built-in function signal>

还有 pypy.module.signal 但我不知道这是否是我应该使用的,或者如何使用它。该模块确实提供了 signal函数,但它需要额外的 space范围;这些 space参数出现在源代码树的几个地方,我不知道它们指的是什么,或者我应该在那里传递什么。

背景:我正在寻找一个可以运行任意时间长度的计算,但捕获 ^C这样我就可以在程序退出之前打印出到目前为止的结果。 (主循环周围明显的 try: ... except KeyboardInterrupt: ... 也不起作用。)

最佳答案

您必须使用 RPython 信号处理函数,它是平台函数的一个小包装。您需要的功能在pypy.module.signal.interp_signal .例如,pypysig_ignore(signum)相当于signal(signum, SIG_IGN) .调用 pypysig_poll如果有,则返回挂起的信号。这是要求处理信号并等待它到达的摘录

pypysig_setflag(signum)
while True:
n = pypysig_poll()
if n < 0:
# No signals pending
break
if n == signum:
handle_signal()

关于signals - 在 RPython 中捕获信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com