草庐IT

Interrupt

全部标签

ruby - 如何将用户中断添加到无限循环中?

我下面有一个ruby​​脚本,它无限地打印从1开始的数字。如何通过终端中的中断(如“Ctrl+C”或键“q”)使脚本停止无限执行?a=0while(a)putsaa+=1#thecodeshouldquitifaninterruptofacharacterisgivenend在每次迭代中,不应询问用户输入。 最佳答案 使用Kernel.trap为Ctrl-C安装信号处理程序:#!/usr/bin/rubyexit_requested=falseKernel.trap("INT"){exit_requested=true}while!

ruby-on-rails - 可以在 Thread::handle_interrupt block 之外异步处理 ruby​​ 异常吗?

乍一看,我以为新的ruby​​2.0Thread.handle_interrupt会解决我所有的异步中断问题,但除非我弄错了,否则我无法让它做我想做的事(我的问题在最后和标题中)。从文档中,我可以看到如何避免在某个block中接收中断,将它们推迟到另一个block。这是一个示例程序:duration=ARGV.shift.to_it=Thread.newdoThread.handle_interrupt(RuntimeError=>:never)do5.times{putc'-';sleep1}Thread.handle_interrupt(RuntimeError=>:immedia

Ruby - 在中断时隐藏 "^C"

在Ruby中我有以下内容:#TrapInterruptstrap("INT")doputs"Shuttingdown..."exitend当我中断程序时,会打印以下内容(MacOSXLion):^CShuttingdown...有什么方法可以在Ruby中隐藏^C吗? 最佳答案 是否回显控制字符是您正在使用的tty的一个属性。stty-echoctl是禁用控制字符回显的Unix方法。如果您使用的是Unix-ish系统,您可以从Ruby脚本中运行此命令并获得相同的效果。 关于Ruby-在中断

javascript - 在 Web Worker 仍在运行时向其发送消息

假设我们有一个webworker引用一个名为“worker.js”的文件。我们使用worker来执行“worker.js”中的一个函数,该函数会执行一些冗长的操作。我们调用将相应的消息发布给工作人员并在主线程中继续。然而,在worker完成初始工作之前,主线程向其发送了另一条消息。我的问题:worker会继续执行我们的计时功能并仅在完成后处理新发布的消息,还是会中断当前操作直到新消息完成? 最佳答案 我已经在GoogleChrome的调试器中尝试了以下代码:worker.js:varcosine;self.onmessage=fun

Javascript 异步执行 : will a callback interrupt running code?

我只是希望有人能为我澄清这一点。如果我使用node.js在服务器端运行以下代码,不在浏览器中:console.log("a");db.get('select*fromtable1',function(result){console.log("b");});console.log("c");假设数据库调用是异步的我应该得到结果acb但是如果我要将以下行添加到我的代码底部while(1);那么b永远不会执行,对吗? 最佳答案 如果您谈论的是客户端javascript执行,那么您是正确的(直到浏览器决定停止您的无限循环)。客户端javas

go - 检测 Go 例程中断

有没有办法检测go例程在执行时是否被中断?我想要类似于Java中的InterruptedException的东西:https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html 最佳答案 InterruptedException如果线程被中断,则抛出Java中的异常,例如与Thread.interrupt()方法(当它正在等待、sleep或以其他方式占用时)。在Go中,您不能从外部中断goroutine(参见cancelablockingop

windows - 在内核模式下等​​待垂直空白?

我正在编写一个需要与垂直空白中断同步的驱动程序,以便沿着USB管道发送一些数据。在用户模式下,有DirectX函数可用于此,如IDXGIOutput::WaitForVBlank和一些年长的。我无法从内核中使用它们。我在Windows8SDK中找到了另一个接口(interface):D3DKMTWaitForVerticalBlankEvent它甚至有一个内核头文件(头文件位于SDK的/km/文件夹中),但它需要gdi32.lib,这是一个用户模式库并与之链接会削弱驱动程序。有什么方法可以让我等待或收到有关垂直空白发生的通知(无需轮询)? 最佳答案

windows - WDF 中的 MSI-X 中断

我在使用WDF/KMDF编写的Windows总线驱动程序中实现MSI-X中断时遇到了很多麻烦。我读过MSDNdocumentation,那里并没有太多有用的信息。我的理解是它应该真的只是“工作”。我已经更改了我们的驱动程序的INF文件以添加适当的注册表项,并确认它们被设置为在安装时正常工作。我正在正确查询PCI配置空间并确定是否支持MSI-X中断。问题是,一旦我有了这些信息,我就不知道如何更改我的代码来专门将中断设置为MSI-X。我执行标准调用来配置WDF_INTERRUPT_CONFIG_INIT结构并调用WdfInterruptCreate,但创建的中断不是消息信号,我不知道需要做

windows - 内核模式驱动程序和用户模式应用程序之间的双向通信?

我需要在内核模式WFP驱动程序和用户模式应用程序之间进行双向通信。驱动程序通过将URL传递给应用程序来启动通信,然后应用程序对该URL进行分类(娱乐、新闻、成人等)并将该类别传递回驱动程序。驱动程序需要知道过滤器功能中的类别,因为它可能会根据该信息阻止某些网页。我在应用程序中有一个线程正在发出I/O请求,驱动程序将使用URL和GUID完成,然后应用程序会将类别写入该GUID下的注册表中,驱动程序将在其中获取它。不幸的是,正如驱动程序验证者指出的那样,这是不稳定的,因为Zw注册表函数必须在PASSIVE_LEVEL运行。我正在考虑用映射内存缓冲区尝试同样的事情,但我不确定中断要求是什么。

python - 什么操作系统中断来自关闭终端选项卡?

我假设关闭终端窗口(或嵌入在IDE中的终端窗口)会向终端中运行的进程发送某种操作系统中断信号。我怎样才能找出这个信号是什么?我正在寻找一种方法来捕获中断,运行一些清理,然后中止。我正在使用Python和Windows。 最佳答案 您正在寻找SIGHUPSIGHUPTheSIGHUPsignalissenttoaprocesswhenitscontrollingterminalisclosed.Itwasoriginallydesignedtonotifytheprocessofaseriallinedrop(ahangup).Inm