问题标签 [signal-handling]

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 投票
3 回答
13136 浏览

c - 使用 select() 从管道读取时捕获信号

将 select() 与管道一起使用- 这就是我正在做的事情,现在我需要抓住SIGTERM它。我该怎么做?select()返回错误(<0)时我必须这样做吗?

0 投票
7 回答
84513 浏览

c - 向信号处理程序提供/传递参数

我可以向信号处理程序提供/传递任何参数吗?

现在,处理程序看起来像这样:

如果我想做一些特别的事情,即删除临时文件,我可以将这些文件作为参数提供给这个处理程序吗?

编辑0:感谢您的回答。我们通常避免/不鼓励使用全局变量。在这种情况下,如果你有一个庞大的程序,不同的地方可能会出错,你可能需要做很多清理工作。为什么 API 是这样设计的?

0 投票
1 回答
283 浏览

c - kill 对信号的尊重是不安全的——还有其他选择吗?

我读到kill对这里的信号不安全。

如果我想杀死子进程作为信号处理程序内部清理的一部分,我还应该使用什么?我的替代方案是什么?

0 投票
1 回答
1496 浏览

c - CTRL+C 不会杀死我的程序

我有一个fork孩子的程序。我试图捕捉以下信号SIGINTSIGPIPESIGTERM

Ctrl+上c(生成 SIGINT - afaik)我想确保在主程序终止之前杀死子进程,这是我在信号处理程序中所做的。

现在我的期望/理解是父进程将在Ctrl+上自动被杀死c。但这并没有发生。

Ctrl+上c,我得到了 shell 提示,但我仍然可以在ps. 所以基本上我的主程序没有被杀死。

我的理解错了吗?

编辑 0:一项观察:在Ctrl+之前c,在ps主程序状态中说S但在+Ctrl之后。cI

0 投票
1 回答
925 浏览

c - 是否可以在接收到 SIGSEGV 时仅终止一个线程?

我有一个启动多个线程的应用程序。我正在使用信号处理程序来捕获信号。

我不希望我的申请退出SIGSEGV;我只想终止产生信号的线程,并在其他线程中继续整个应用程序的流程。是否可以?

0 投票
2 回答
4622 浏览

c - 在 sigaction 中恢复原始信号

我已经定义了 sigaction 并且它工作正常。但是,我想在我的操作完成后恢复原始信号。这是我的签名:

信号处理程序是从 JNI_Onload 设置的:

0 投票
2 回答
1394 浏览

java - 如何在 Jython 中拦截键盘中断 (CTRL-C)?

这是我尝试过的...

它基于这个http://www.javaspecialists.co.za/archive/Issue043.html,但显然我错过了一些东西。

0 投票
1 回答
2539 浏览

multithreading - 线程化的 perl 和信号处理程序

我正在使用Thread::Poolperl 中的模块来并行化一些 perl 代码。这个过程需要一段时间,偶尔我会在命令行中用SIGINT. 正如我所料,这样做会导致程序突然结束。这留下了一些混乱的临时文件,所以我想安装一个信号处理程序。我这样做了:

在创建线程池和启动线程之前。现在,当我发送 时,正在运行SIGINT工作线程死亡,但池立即启动另一组工作人员来处理下一组作业并继续运行。为什么信号处理程序中的退出调用不退出主线程?我需要什么来阻止进程运行?

编辑回应暴民的评论

** 进一步编辑 **

这是我写的一个例子。

0我看到了预期的结果

但是1,这会发生

等等并且处理程序没有被输入并且进程继续运行。我不得不用除SIGINT. 如果没有处理程序,两种情况都会在传递SIGINT.

0 投票
1 回答
505 浏览

c - 信号处理程序没有在主函数中被调用

我正在尝试研究信号处理程序是如何工作的。我编写了代码,每 100 微秒触发一次警报信号。但是,没有发出信号。这是代码:

有人可以解释我做错了什么吗?

谢谢

0 投票
2 回答
180 浏览

java - 如何使用 bash 触发 Java 方法

假设我启动了一个 Java 应用程序:

java -cp whatever.jar com.example.Start

进程启动正常并继续以 PID 1314 运行。

现在我希望系统根据用户请求触发一个方法。
如何使用 bash 来指示正在运行的 PID 并让它触发一个方法?