2

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

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

4

2 回答 2

2

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

所以看起来它并没有真正“中断”任何正在运行的线程。您可以通过简单地生成自己的线程来实现相同的效果。

这里有更多评论:

于 2011-02-04T12:59:23.063 回答
0

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

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

于 2011-03-21T20:25:15.497 回答