首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RPython中捕获信号

在RPython中捕获信号
EN

Stack Overflow用户
提问于 2012-04-24 10:14:41
回答 1查看 181关注 0票数 2

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

我已经浏览了PyPy源代码树,我找到了CPython signal模块,试图在翻译程序中使用这个模块会给出翻译过程中的预期错误:

代码语言:javascript
复制
[translation:ERROR]  Exception: unexpected prebuilt constant: <built-in function signal>

还有pypy.module.signal,但是我不知道我是否应该使用它,或者如何使用它。该模块确实提供了一个signal函数,但它需要一个额外的space参数;这些space参数在源代码树中显示了几个位置,我无法计算出它们所引用的内容或应该传递的内容。

背景:我希望有一个运行时间任意长的计算,但是捕获^C,以便在程序退出之前打印出结果。(主循环周围明显的try: ... except KeyboardInterrupt: ...也不起作用。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-24 15:32:46

您必须使用RPython信号处理函数,这是平台上的一个小包装器。您需要的函数在pypy.module.signal.interp_signal中。例如,pypysig_ignore(signum)等同于signal(signum, SIG_IGN)。如果有挂起信号,请调用pypysig_poll返回挂起信号。这是一段要求处理信号并等待信号到达的节选

代码语言:javascript
复制
pypysig_setflag(signum)
while True:
    n = pypysig_poll()
    if n < 0:
        # No signals pending
        break
    if n == signum:
        handle_signal()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10295921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档