问题标签 [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 回答
534 浏览

python - 如何使用 python/ipython 停止 rpy2 中的嵌入式 R 进程

我正在使用 rpy2 从 ipython 执行 R。但是我想杀死或停止嵌入式 R 进程,但 Ctrl-C 不起作用。

这可能是因为 ipython 拦截了 SIGINT(我不确定)..

我用 SIGSTOP (Ctrl+Z) 进行了测试,它可以工作..

有什么方法可以在不终止 ipython/python 会话的情况下终止嵌入式进程(R/rpy2)?

谢谢

0 投票
1 回答
328 浏览

c - 当 SIGINT 信号被忽略时打印一个字符串

我被要求编写一个程序,该程序将忽略该SIGINT信号并打印一条消息,说它已被忽略。这是我在参考 and 的手册页后想到signalsigaction

但是我很困惑当信号被忽略时我将如何打印一条消息。另一种选择是定义我自己的信号处理函数,但这样就不会忽略它,对吗?

0 投票
4 回答
6572 浏览

bash - 如何捕获 Ctrl-C 并使用它正确退出无限循环

我试图在一个无限循环中运行一个程序,因为它有时会无缘无故地死掉。我希望能够按 Ctrl-C 以防止程序重新启动。

我不希望 Ctrl-C 杀死程序,只是等到它死掉,然后不再重新启动它。

theprogram是一个葡萄酒程序(utorrent)。

告诉我如何制作它的奖励积分,因此它会theprogram像点击右上角的“x”一样安全退出。kill当我从命令行手动或按 Ctrl-C 时,它无法运行其清理代码。因此,我试图阻止它重新启动。

我检查了其他一些关于捕获 SIGINT 的问题,但我不知道如何做到这一点。

任何人都可以修复此代码吗?当按下 Ctrl-C 时,我的代码似乎会杀死theprogram然后退出循环,而不是让theprogram清理。

0 投票
2 回答
1580 浏览

python - Python-使用 SIGINT 杀死线程-未正确引用全局变量

我正试图让它到达我的线程可以捕捉到信号的地方。在我看来,kill_received单例列表位于和的相同命名空间中signal_handler()do_the_uploads() 并且引用了相同的内存位置。但是当我在运行时控制 C 时,我看到 False 从"print kill_received[0]"它应该为 True 的时候开始打印,因为我点击了 control-C。

从主脚本:

更新:

仍然没有成功,但我将语法更改为这样,因为它更简洁:

0 投票
1 回答
3581 浏览

c - SIGINT 的信号处理程序

我正在处理以下代码。该程序应该能够使用 sigaction 处理 SIGINT。到目前为止,它几乎完成了,但我遇到了两个问题。
第一个问题是如果在 3 秒内收到 3 个信号,程序应该打印“正在关闭”并以状态 1 退出。
第二个问题是我使用gettimeofdaystruct timeval来获取有关信号到达时间的时间(以秒为单位),但我在这里也失败了。当我尝试它时,我陷入了无限循环,甚至以为我在 3 秒内按了ctrl+ C 3 次。此外,由此产生的秒数是相当大的数字。
我希望有人可以帮助我解决这两个问题。这是代码

0 投票
1 回答
1163 浏览

bash - 无法使用 Ctrl+c 终止 shell 命令

有人能告诉我为什么bash不能Ctrl+c正确终止以下语句吗?

我运行这条语句,然后启动两个bash进程和一个tail进程(从 获取ps auxf),然后输入Ctrl+c,它不会退出到bash提示符,此时我看到两个bash进程停止了,而tail仍在运行,那么我输入一些东西/tmp/a.txt,然后我们可以进入 bash 提示符。

我想要的是,输入Ctrl+c,然后退出bash提示,没有任何相关过程。

有人解释这个语句的确切过程会更加感激,比如管道导致 bash 分叉,某些东西重定向到某个地方等等。

2014 年 10 月 9 日更新:

这里提供一些更新,以防它对您有用。我采用的解决方案与两个因素相似:

  1. 使用 tmp pid 文件

    /li>
  2. 使用陷阱如:trap "rm ${tail_pid} 2>/dev/null; kill 0 2>/dev/null; exit;" INT TERM杀死相关进程并删除剩余文件。

请注意,这kill 0 2是特定于 bash 的,0 表示当前进程组中的所有进程。该解决方案使用了 tmp pid 文件,而我仍然期望其他没有 tmp pid 文件的解决方案。

0 投票
2 回答
1350 浏览

sigint - Julia,处理键盘中断

标题说明了一切。我该如何处理或抓住SIGINT朱莉娅?从我认为我只是想InterruptException使用try/catch如下块捕获的文档中

但是当我用^C.

编辑:上面的代码在 julia REPL 中按预期工作,只是不在脚本中。

0 投票
1 回答
2499 浏览

bash - 在 bash 中,如何在不停止脚本的情况下捕获和处理 SIGINT?

看起来像

只要SIGINT被捕获就停止脚本。然后,on_sigint被执行。是否可以在SIGINT不停止脚本的情况下进行处理?

0 投票
1 回答
545 浏览

zsh - 你如何停止当前的前台进程并重新执行它?

0 投票
1 回答
1262 浏览

node.js - 将 rlwrap 与 Node.js REPL 一起使用,节点“.break”(Ctrl-C)如何不被 rlwrap 解释为 SIGINT?

在讨论了如何在会话之间保留命令行历史记录之后,我定义了以下别名:

它非常适合历史持久性,但现在,每次我执行 Ctrl-C 来发送节点的“.break”命令时,rlwrap 也会接受它,但作为 SIGINT:它会清除所有内容并自杀(如其手册页中所述),因此强迫我重新启动节点会话(不得不回忆我的 var、funcs、requires 等),而我只是想“.break”......

有什么方法可以恢复经典节点行为?

  • Ctrl-C : 中断
  • 再次 Ctrl-C(或在空白行上):退出