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

shell - 将 ctrl-c 发送到特定的屏幕会话

我正在设计一个脚本来在命名的屏幕会话中启动一个进程。

因此bash myscript.sh start test将创建一个名为 test 的屏幕并test.cfg使用该软件运行。

现在我希望我的脚本访问特定的屏幕会话并执行CTRL+C来停止正在运行的进程,以便我可以终止屏幕会话。

像这样的东西:

0 投票
1 回答
1582 浏览

windows - Windows:如何从命令行向进程发送信号(SIGNINT 或 SIGBREAK)

从 Windows 命令行向进程发送信号SIGINT或向进程发送信号的最佳方式是什么?SIGBREAK就我而言,我想将带有批处理文件的CTRL-Break事件发送到正在运行的java进程。

我正在寻找没有编程解决方案,但已经存在的命令行工具。它应该从可信赖的来源公开获得。

0 投票
4 回答
22062 浏览

c - 什么是信号功能(SIGINT)?

下面的这个语句有什么作用?如果有人能解释这个功能,我将不胜感激。

0 投票
1 回答
13199 浏览

c++ - 等效于在 Windows/MinGW 下捕获“CTRL+C”的“SIGINT”(posix)信号

我在 windows 下移植了一个 Linux/gcc 程序,并为两者实现了常见的异常处理。我想知道SIGINTMinGW/gcc 的信号等价物是什么。

这是我在 Linux 下的处理方式:

在 Windows 下,这看起来像:

SIGINT我的问题是我在EXCEPTION_*Windows中没有看到任何等价物。

如何在 Windows (MinGW/gcc) 下捕获“CTRL+C”中断?

非常感谢。

0 投票
4 回答
7950 浏览

c - Readline:获取有关 SIGINT 的新提示

我有类似于以下的代码,使用 readline:

我已经将它设置为拦截SIGINT(即用户按下Ctrl+C),因此我可以判断信号处理程序handle_signals()正在工作。但是,当控制返回到 时readline(),它使用的是输入之前使用的同一行文本。我想要做的是让 readline “取消”当前的文本行并给我一个新行,就像 BASH shell 一样。像这样:

有没有机会让这个工作?我读到的邮件列表中提到了 using longjmp(2),但这似乎不是一个好主意。

0 投票
0 回答
543 浏览

python - 带有子进程的 Python 程序会在 CTRL+C 上终止子进程,但不会在 sys.exit() 上终止

我正在为多进程 UDP 服务器编写测试工具。测试工具运行多个子进程——包括几个产生 UDP 服务器实例的子进程。我在退出时终止子进程和从内部退出程序都遇到了麻烦——唯一有效的是终端的 CTRL+C,它会杀死子进程并很好地停止程序。

我有几个相关的问题:

  1. sys.exit()如果我在信号处理程序中或在我触发信号后使用 ,程序不会退出。看起来它遇到了退出代码,然后挂起。
  2. 如果我使用p.terminate()os.kill(p, SIGINT
  3. 如果我使用该程序不会终止子进程os._quit()

同样,如果我只是让程序运行并从终端键入 CTRL+C,程序会立即停止,并带走所有子进程。从程序中执行此操作的最佳方法是什么?


我在程序结束时尝试的内容

信号处理器

0 投票
1 回答
8457 浏览

kill - 如何终止使用 sudo with kill 运行的某些进程

使用非特权用户帐户,使用 bash,我可以这样做:

并用 Ctrl-c 杀死它。但是,从另一个终端发送 SIGINT 或 SIGKILL 将无法达到此目的。

有谁知道这是为什么?例如,我希望能够终止发送信号的进程,以便在脚本中使用。

问候。

0 投票
4 回答
6889 浏览

java - Java 线程和关闭挂钩

我刚刚遇到了一个有趣的问题。似乎,如果在 Java 中,一个线程调用System.exit()它就不能通过Thread.join().

这引起了我的问题,因为我想在我的应用程序之后使用关闭挂钩进行清理,例如:

这个想法是它确保线程在关闭这些资源之前已经完成了它们各自的资源。问题是有 3 种情况可以调用关闭挂钩。他们是:

  1. 用户点击 [ctrl] + [C]。
  2. 阅读器线程完成,并调用System.exit().
  3. Writer 线程完成,并调用System.exit().

第一种情况,用户点击 [ctrl] + [C] 可以正常工作。但在其他两种情况下,关闭挂钩会永远阻塞。这是一个连锁效应,Thread.join()即针对已经调用过的线程调用的oneSystem.exit()永远阻塞。

因此,我有 2 个问题。首先,我知道我可以改用Thread.join(long millis)它们,这样它们就不会无限期地阻塞,但是谁能想到一个更优雅的解决方案?其次,虽然一个人可以调用Thread.join()同一个线程两次,而第二次它会立即返回,有没有人知道为什么调用Thread.join()一个已经System.exit()无限期调用块并且不立即返回的线程的原因?

0 投票
2 回答
1305 浏览

python - Sending 'ESC' or signal to subprocess

I'm currently designing a script that will, in the end, control a range of games with the ability to start and stop them all from the main script.

However, one of the games can only gracefully stop by pressing the 'ESC' key. How can I interpret this into a signal or something similar?

*The games are started with gamename.Popen() and then usually stopping is done by sending SIGINT or SIGQUIT.

Ideas?

0 投票
1 回答
281 浏览

c - 一个分叉孩子/孙子的程序

我有一个任务要编写一个程序来使用 fork off 一个孩子。该孩子将分叉出自己的孩子(原始父母的孙子)。孙子应该 exec() 做一个 ps -ef (例如)。孩子应该等待它的孩子(原始父母的孙子)成功完成。如果它没有成功完成(我假设状态返回码是 0),它应该产生另一个孙子,直到它成功。一旦完成,它应该将 SIGINT 信号发送给它的父级。


这就是我正在做的,第二次分叉孙子时,我按照指定执行。在这里,我也设置了一个信号处理程序。在孩子身上,我等待 (wait(&status)) 并循环 while (status != 0)。这就是想法。

但是,我仍然无法让程序正常工作。我想我的信号处理有问题(?)你能给我一个提示吗?