问题标签 [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.

0 投票
1 回答
1338 浏览

c - C 在头文件中使 volatile sig_atomic_t 全局化

我正在尝试创建一个全局变量,在我的 msh.c 文件中初始化为:

仅此一项似乎还不错。但是,如果我转到我的 proto.h 文件(该文件包含在该项目的所有 c 文件中),然后键入:

它抛出了一堆错误:

我究竟如何使这个变量成为全局变量?谢谢。

0 投票
2 回答
1226 浏览

node.js - Node.js 中的默认 SIGINT?

我尝试搜索 Node.js 源代码,但找不到。默认情况下,我在哪里可以找到在以下示例中默认处理 SIGINT ( Ctrl+ ) 的 Node.js 代码:C

0 投票
0 回答
111 浏览

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()?我可以做些什么来优雅地停止我的服务器?或者这只是对想象中的问题的矫枉过正?

0 投票
3 回答
23110 浏览

node.js - 如何使用 Express.js 正确处理 SIGINT?

当我的Express.js服务停止时,我需要做一些有用的事情SIGINT。使用 Express.js 版本 3.0.6,我知道这应该可以工作:

SIGINT但是,除非我发出( Control- C) 两次,否则该过程不会给我返回 Bash 提示:

还有一个警告。如果我启动此 Express.js 服务并且不发送任何请求,则SIGINT正确终止。

显然,我在这里缺少一些基本的东西?

0 投票
2 回答
783 浏览

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 dies 的行?
0 投票
0 回答
222 浏览

sigint - 覆盖 "^c" 或 "ctrl-c" 是 shell 解释器的中断信号

我想覆盖 ctrl-c 作为我所有 shell 的信号中断字符,并用其他东西替换它。我查看了 stty 和 xmodmap,但还没有找到任何我理解的东西。

如果有人有一些想法,我将不胜感激。

0 投票
1 回答
1197 浏览

c - setpgrp/setpgid 失败(?),适用于 Mac OSX,不适用于 Linux

我正在尝试编写一个执行子命令的程序,并且不允许该子命令被 Ctrl+C 杀死。

我读过我可以用 setpgid/setpgrp 完成这个。

以下代码适用于 OSX,但在 Linux(2.6.32,Ubuntu 10.04)上运行类似,

导致没有输出发生并且程序不能被 SIGINT 杀死。

如果您注释掉对 setpgrp 的调用,您将看到剩余的代码可以正常工作。

0 投票
2 回答
814 浏览

ruby - 如何配置 ruby​​ 以在 Ctrl-C (SIGINT) 上进入调试器?

我想在输入 ctrl-C(或发送 SIGINT)时进入调试器。我已经安装了调试器(我正在运行 Ruby 1.9.3)并验证它可以工作。我已将此添加到我的设置文件中(这是用于 Padrino,但我认为它与 Rails 类似):

...但键入 Ctrl-C 不会调用调试器。事实上,如果我替换debuggerputs "saw an interrupt!",键入 Ctrl-C 也不会导致打印发生。

更新

按照Mike Dunlavey的建议,我尝试从调试器中显式调用:catch Interrupt

不高兴——中断没有进入调试器。

我错过了什么?

0 投票
1 回答
3571 浏览

c - 如何使用 SIGINT 打破对 accept() 或 read() 的等待?

我目前正在尝试通过使用信号(在本例中为 SIGINT)来打破对 accept() 和/或 write() 的等待。我的程序也没有按预期离开。

我挂断的主要内容主要是:

当我点击它并使用我的信号并返回时,我仍然停留在这行代码上,等待用户连接到我的套接字。处理程序中的 x 用于这段代码所在的外部循环。

有没有更好的方法来做我想做的事情?另外,如果这还不够信息,请告诉我。

谢谢你。

编辑:

这是对信号的检查,它位于 main 的顶部。我想这就是你所要求的:

0 投票
1 回答
5782 浏览

java - Java信号处理然后返回主程序

MI有一个以for循环开头的程序,它旋转了10次,一个循环持续一秒钟。我需要处理一个信号(CTRL+C),在处理它时,它应该做它自己的 for 循环,在它停止之后,我应该返回到主循环。我已经设法完成了上面的几乎所有事情,但是循环不会单独执行。他们并行进行。希望你能帮忙...谢谢:)

顺便说一句,我的代码是: