【问题标题】:What does SIGINT translate into in the NT native API?SIGINT 在 NT 原生 API 中翻译成什么?
【发布时间】:2011-06-21 08:33:12
【问题描述】:

Windows 在控制台应用程序中支持 SIGINT 以响应 Ctrl-C。这意味着 Windows 具有从远程线程(甚至是进程!)中断正在运行的线程并调用信号处理程序的功能。

这在 NT Native API 级别是如何工作的?这个线程中断 API 可以用于用户空间的其他用途吗?

【问题讨论】:

    标签: winapi signals internals nt-native-api


    【解决方案1】:

    根据http://msdn.microsoft.com/en-us/library/xdkz3x12(v=vs.71).aspx,SIGINT 会导致创建一个新线程来处理中断。

    所以看起来它并没有真正“中断”任何正在运行的线程。您只需生成自己的线程即可达到相同的效果。

    这里有更多评论:

    【讨论】:

      【解决方案2】:

      您始终可以暂停目标线程,修复上下文以执行您的过程,然后恢复它。这很丑,但如果你想中断一个线程来执行一个过程,它会起作用。

      控制台和 CTRL+C 处理程序是 Win32 结构,并不真正存在于本机 API 级别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-02
        • 2017-02-25
        • 2015-07-12
        • 1970-01-01
        • 2018-06-19
        • 2014-12-20
        • 2018-12-30
        • 2016-02-19
        相关资源
        最近更新 更多