问题标签 [sigint]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C 在头文件中使 volatile sig_atomic_t 全局化
我正在尝试创建一个全局变量,在我的 msh.c 文件中初始化为:
仅此一项似乎还不错。但是,如果我转到我的 proto.h 文件(该文件包含在该项目的所有 c 文件中),然后键入:
它抛出了一堆错误:
我究竟如何使这个变量成为全局变量?谢谢。
node.js - Node.js 中的默认 SIGINT?
我尝试搜索 Node.js 源代码,但找不到。默认情况下,我在哪里可以找到在以下示例中默认处理 SIGINT ( Ctrl+ ) 的 Node.js 代码:C
node.js - 优雅地关闭 Node.js 服务器
可能重复:
node.JS HTTP 服务器的正常关闭
我在 Node.js 中有一个使用该http
模块的基本服务器。虽然我知道一个SIGINT
事件会关闭程序并停止服务器,但使用它来关闭服务器似乎更干净server.close([callback])
(我在SIGINT
事件上这样做,类似于这里)。只要服务器没有收到任何请求,它就可以很好地工作。一旦服务器收到请求,即使我的响应很简单:
来自server.close()
never 的回调被调用,仔细检查发现它server.connections
是 1,而不是 0。(例如,如果我让它提供一个带有三个外部脚本的 HTML 页面,那么server.connections
它将是 4。)
为什么这些连接不被终止res.end()
?我可以做些什么来优雅地停止我的服务器?或者这只是对想象中的问题的矫枉过正?
node.js - 如何使用 Express.js 正确处理 SIGINT?
当我的Express.js服务停止时,我需要做一些有用的事情SIGINT
。使用 Express.js 版本 3.0.6,我知道这应该可以工作:
SIGINT
但是,除非我发出( Control- C) 两次,否则该过程不会给我返回 Bash 提示:
还有一个警告。如果我启动此 Express.js 服务并且不发送任何请求,则SIGINT
正确终止。
显然,我在这里缺少一些基本的东西?
perl - 从 Perl 脚本创建/引发 SIGINT (Ctrl-C) - 并导致调试器从模具处理程序进入步进模式?
我在尝试调试的 Perl 中的一个相当复杂的程序(在 Linux 下)遇到问题。我可以用这里的简单代码段来模拟问题(test.pl
):
运行此程序退出:
所以,现在我想调试它——但是错误导致程序死掉,并退出调试器:
然后,我在调试器(PerlMonks)中发现警告中断;所以我尝试添加这个:
...但这也会杀死调试器:
现在,问题是,我知道如果我用 Ctrl-C 中断程序 - 这通常会导致调试器进入单步模式;例如,您可以设置my $numelems = 100000000;
,并在它循环时按 Ctrl-C - 您可以调试:
现在,我可以在源 perl 程序中插入断点:
但它在以下情况下进入循环$ix = 0
:
...而且我不想通过 10000 个元素来解决有问题的部分:)
所以,我想到了以下几点——如果有一种方法可以从 Perl 脚本本身引发/生成/创建 SIGINT (Ctrl-C) ,那么我就可以从模具处理程序中引发它,并希望能引起一步在进程死亡之前的调试器。所以,我的问题是:
- 是否可以从 Perl 脚本中引发 SIGINT,这会破坏自身 - 如果是这样,如何?
- 如果前一个是可能的,它是否能够在进程终止之前使用模具处理程序中的 Ctrl-C 进入调试器步骤模式?
- 如果前一个是不可能的 - 我有什么可能导致进入调试器步骤模式,就在 program
die
s 的行?
sigint - 覆盖 "^c" 或 "ctrl-c" 是 shell 解释器的中断信号
我想覆盖 ctrl-c 作为我所有 shell 的信号中断字符,并用其他东西替换它。我查看了 stty 和 xmodmap,但还没有找到任何我理解的东西。
如果有人有一些想法,我将不胜感激。
c - setpgrp/setpgid 失败(?),适用于 Mac OSX,不适用于 Linux
我正在尝试编写一个执行子命令的程序,并且不允许该子命令被 Ctrl+C 杀死。
我读过我可以用 setpgid/setpgrp 完成这个。
以下代码适用于 OSX,但在 Linux(2.6.32,Ubuntu 10.04)上运行类似,
导致没有输出发生并且程序不能被 SIGINT 杀死。
如果您注释掉对 setpgrp 的调用,您将看到剩余的代码可以正常工作。
ruby - 如何配置 ruby 以在 Ctrl-C (SIGINT) 上进入调试器?
我想在输入 ctrl-C(或发送 SIGINT)时进入调试器。我已经安装了调试器(我正在运行 Ruby 1.9.3)并验证它可以工作。我已将此添加到我的设置文件中(这是用于 Padrino,但我认为它与 Rails 类似):
...但键入 Ctrl-C 不会调用调试器。事实上,如果我替换debugger
为puts "saw an interrupt!"
,键入 Ctrl-C 也不会导致打印发生。
更新
按照Mike Dunlavey的建议,我尝试从调试器中显式调用:catch Interrupt
不高兴——中断没有进入调试器。
我错过了什么?
c - 如何使用 SIGINT 打破对 accept() 或 read() 的等待?
我目前正在尝试通过使用信号(在本例中为 SIGINT)来打破对 accept() 和/或 write() 的等待。我的程序也没有按预期离开。
我挂断的主要内容主要是:
当我点击它并使用我的信号并返回时,我仍然停留在这行代码上,等待用户连接到我的套接字。处理程序中的 x 用于这段代码所在的外部循环。
有没有更好的方法来做我想做的事情?另外,如果这还不够信息,请告诉我。
谢谢你。
编辑:
这是对信号的检查,它位于 main 的顶部。我想这就是你所要求的:
java - Java信号处理然后返回主程序
MI有一个以for循环开头的程序,它旋转了10次,一个循环持续一秒钟。我需要处理一个信号(CTRL+C),在处理它时,它应该做它自己的 for 循环,在它停止之后,我应该返回到主循环。我已经设法完成了上面的几乎所有事情,但是循环不会单独执行。他们并行进行。希望你能帮忙...谢谢:)
顺便说一句,我的代码是: