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

c++ - C++:在 SIGINT 之后继续执行

好的,我正在编写一个正在执行一些非常繁重的分析的程序,我希望能够快速停止它。

我添加signal(SIGINT, terminate);到 main 的开头并定义了终止,例如:

在 linux 中,这按我的预期工作,即它等待用户输入。但是当我尝试在 Windows 中做同样的事情时,它会显示消息并退出。

有什么办法可以阻止 SIGINT 立即关闭程序?

更新:

当我尝试

正如 Gregory 所建议的那样,该程序仍然毫不客气地退出而没有停止用户输入。

更新 2:我不确定是什么做的,但代码现在可以正常工作。谢谢大家的帮助。

0 投票
5 回答
5651 浏览

c - 在自己的处理程序中捕获信号

捕获KeyboardInterrupt一次后,当我再次按 "Ctrl+C" 时,不处理 SIGINT ......我打算每次按 "Ctrl+C"时都应打印"Into handler " 。

我想在“SIGINT handler()”本身中捕获 SIGINT..

0 投票
1 回答
1017 浏览

objective-c - 在 Objective-C 中将 control+c (SIGINT) 发送到 NSPIPE

我正在尝试终止通过 NSTask 生成的 openvpn 任务。

我的问题:

我应该将ctrl+ c(SIGINT) 发送到我的 NSTask 的输入 NSPipe 吗?

或者,我正在考虑使用 kill(pid, SIGINT); 但它会复杂得多,因为必须通过绕道确定进程 ID([task processIdentifier] 在这里没有帮助) - 原始 NSTask 调用:

这不好,我知道,但它只被调用一次,并且在这种情况下已经输入了 sudo 密码。

0 投票
3 回答
4991 浏览

python - python - 如何停止将SIGINT传递给python中的子进程?

我的 python 脚本使用信号处理模块拦截 SIGINT 信号以防止过早退出,但是这个信号被传递给我用 Popen 打开的子进程。是否有某种方法可以防止将此信号传递给子进程,以便在用户按下 ctrl-c 时它也不会过早退出?

0 投票
3 回答
3758 浏览

signals - 使用 supervisord 将信号传递给托管进程

我正在使用 supervisord 来生成和管理我用 C 语言为 linux 目标编写的 FastCGI 应用程序。我有一个信号处理程序,可以在收到 SIGINT 时优雅地退出我的应用程序。我已经通过在终端窗口中运行应用程序并发出 Ctrl-C 退出来验证信号处理程序是否按预期工作。

当向 supervisord(通过 supervisorctl)发出“关闭”命令时,supervisord 似乎无法在不调用 SIGKILL 的情况下强制应用退出:

我的 supervisord.conf 文件中有以下内容

我假设 supervisord 在调用 shutdown 命令时发出“停止信号”,所以我将 INFO 语句作为我的应用程序没有响应 supervisord 发出的 SIGINT 的指示。

如何调试 supervisord 和我的应用程序之间传递的信号?

0 投票
1 回答
406 浏览

python - 信号处理程序,python

我有一个多线程程序,并在按下 ctrl c 时使用 signal.signal(SIGINT,func) 杀死所有线程。我的问题是:

我必须从 python 中的 main 调用 signal.signal(...) 。我是否必须在循环中调用它,或者我可以只设置一次,每当用户按下 ctrl c 时,信号就会被捕获?

0 投票
2 回答
8594 浏览

python - 如何在线程 python 程序中捕获 SIGINT?

使用模块线程和类Thread()时,我无法捕获SIGINT(控制台中的Ctrl+ C)无法捕获。

为什么以及我能做什么?

简单的测试程序:

当我点击Ctrl+C时,什么也没有发生。

0 投票
3 回答
1301 浏览

c - 从 Ctrl+C 使用 SIGINT

好吧,所以我正在使用 sighandler 来解释一些信号,为此它是Ctrl+ C,所以当Ctrl+C被键入时,将采取一些行动,一切都很好而且花花公子,但我真正需要的是让这种情况发生^C出现在输入/输出中

例如,假设我有这个代码

输出将是

^CUser pressed Ctrl+C

我怎么能简单地做到这一点

User pressed Ctrl+C?

0 投票
2 回答
1291 浏览

c - 简单外壳中的分段错误

我正在为一个简单的 c shell 编写代码。它存储最后 10 个命令的历史记录。如果“r”作为命令输入,那么它应该运行历史记录中最近的命令。此外,如果输入了“r x”,其中“x”是历史记录中要执行的命令的第一个字母,那么它将运行以该字母开头的最新命令。

我遇到了从历史复制到 inputBuffer 的问题;当我尝试这样做时,它会出现分段错误。

这是代码(这很乱,我一直在尝试很多不同的东西,希望能修复它)。任何建议将不胜感激!

0 投票
3 回答
22444 浏览

c++ - 如果发出 SIGINT 或 SIGSTP,是否调用析构函数?

我有一个带有用户定义析构函数的类。如果该类最初是实例化的,然后在程序运行时发出 SIGINT(在 unix 中使用 CTRL+C),会调用析构函数吗?SIGSTP(unix 中的 CTRL + Z)的行为是什么?