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

c - pthread_sigmask 干扰 GDB

我一直在 Linux 下开发一个多线程程序,对信号处理有特殊要求。例如,我需要程序打印单个 Ctrl-C 输入的统计信息。

我使用 pthread_sigmask 和 sigwait 实现了这一点,即在创建其余线程之前阻塞主线程中的所有非关键信号,并启动一个在 sigwait 上阻塞的“捕获器”线程。

初始化(主要):

捕手线程例程:

一切都按预期工作,但我的捕获机制阻止 GDB 暂停程序(触发 SIGINT 例程)。我怎样才能解决这个问题 ?

谢谢

0 投票
2 回答
5132 浏览

java - Cygwin CTRL-C(信号中断)无法正常工作 - JVM 关闭挂钩未启动

我正在开发一个 Java 应用程序,它利用关闭挂钩来清理程序的终止/中断,但我注意到 Cygwin 的 CTRL-C 实现似乎不会触发关闭挂钩。从表面上看,它似乎已经中断了进程,将控制权交还给了命令行,但是根本没有触发进程的关闭挂钩,因此不会发生清理。

在 cmd 他们被抓住了,但由于各种限制,我需要以某种方式让他们在 Cygwin 中工作。

有没有办法通过 Cygwin 在正在运行的进程中触发 SIGINT,或者可能是我可以用来清理中断和终止的关闭挂钩的替代方法?

0 投票
3 回答
1535 浏览

c++ - 我可以将参数传递给 SIGINT 吗?

我正在尝试传递一些额外的参数,以便它们可以在我的程序的 SIGINT 调用中使用,但是我得到一个编译错误,这实际上是可以实现的还是我被误导了?

如果可以实现,有人可以在这里解释我的错误吗?

我在编译时收到以下错误;

指 main() 中的这一行;

0 投票
0 回答
80 浏览

ios - 在 iOS 模拟器中启动的间歇性 SIGINT

有时,当我在模拟器中运行我的应用程序时,它会在启动时冻结,并带有SIGINT. 它中断的行是多种多样的,但它们包括系统库调用libsystem_c.dylib'pthread_rwlock_unlock$UNIX2003:和我自己的代码中的调用,比如self.view.layer.shadowRadius= 6.0f;or button= [[UIButton alloc] initWithImage:image];。这种行为是不可预测的,我无法弄清楚是什么原因造成的。这不会在设备上发生。

SIGINT如果断言失败,我偶尔会在我的代码中使用来杀死调试版本中的应用程序,但这个问题永远不会发生在这些行之一上或附近。

0 投票
4 回答
2639 浏览

c - sigint 调用多次而不是一次 (C)

这是我的代码片段:

和函数 sig_handler:

当我按下“CTRL+C”时会出现问题,因为 sighandler 被多次调用。
例子:

  1. 服务器正在监听;
  2. 2 x 收到连接;
  3. 2 个儿童叉;
  4. 2 x 孩子已关闭;
  5. 现在我想关闭服务器,所以我按 CTRL+C;

预期输出:
received SIGINT, exiting....
真实输出:
received SIGINT, exiting....
received SIGINT, exiting....
received SIGINT, exiting....

为什么我会出现这种行为?

编辑:代码更新
这是当 1 个分叉完成并且孩子完成后我关闭服务器时发生的情况:

exit(0)解决方案:问题是我在指令之后没有写do_child()...代码更新了!

0 投票
2 回答
1795 浏览

bash - SIGINT 取消在 bash 脚本中读取?

我正在编写一个 bash 包装器来学习一些脚本概念。这个想法是在 bash 中编写一个脚本,并在登录时将其设置为用户的 shell。

我做了一个 while 循环reads 和evals 用户的输入,然后注意到,每当用户键入CTRL + C时,脚本都会中止,因此用户会话结束。

为了避免这种情况,我陷入SIGINT了陷阱,在陷阱中什么也不做。

现在,问题是当您键入CTRL + C命令的一半时,它不会像在 bash 上那样被取消 - 它只是忽略CTRL + C.

所以,如果我输入ping stockoverf^Cping stackoverflow.com,我得到ping stockoverfping stackoverflow.com的不是ping stackoverflow.com我想要的。

有没有办法做到这一点?

0 投票
2 回答
986 浏览

c - 输出重定向时 SIGINT 丢失;如何检测程序中的终止?

我编写了检测 SIGINT 的控制台程序,因此当用户按下 Ctrl+C 时,程序会执行一些操作并终止。

但是当我用管道将这个程序重定向到任何其他程序时,例如: ./my_program | tee xxx SIGINT 永远不会出现在我的处理程序中。尽管这个程序终止。处理 SIGTERM 没有任何效果。SIGTERM 也不会出现在 Ctrl+C 之后。

如何在所有情况下检测到该程序被 Ctrl+c 中止?


我的 SIGINT 和 SIGPIPE 测试用例:

0 投票
2 回答
1325 浏览

telnet - telnet 捕获 ctrl+c 服务器


我已经写了一个像这里这样的套接字服务器。如果我输入ctrl+ctelnet,服务器现在什么都不做。我想抓住它,signal(SIGINT,SIG_IGN)
我该怎么办?

0 投票
2 回答
121 浏览

matlab - 反复按 ctrl+c 有什么意义吗?

经常(例如使用matlab)我不小心执行了一些程序。我尝试通过按 CTRL+C 来中断它。有时这有效,有时则无效,我一直疯狂地点击它,直到程序最终停止。这些额外的 ctrl+c 是在做什么,还是只是一场雨舞?

0 投票
1 回答
320 浏览

bash - 确保破坏bash中的进程?(可能捕捉到 SIGINT)

我正在尝试设置一个 IO 脚本以允许两个 FIFO 之间的输入/输出通信(一个 FIFO 用于输入,另一个用于输出)。

在我输入输入时,我的服务器必须接收输出。两者Internals/servout都是Internals/servinFIFO。我目前通过tail在等待输入时在后台运行来实现这一点。

这是我当前的代码:

我遇到的主要问题是当我不小心键入 Ctrl-C 来结束我的脚本时。发生这种情况时,tail -f -n 0 Internals/servout &代码将继续在后台运行。正如您可能想象的那样,这是不可取的。

有没有办法确保tail命令被杀死,即使发送了 SIGINT 或类似的信号?finally我正在考虑一些可以与Python 中的关键字具有相同目的的东西,或者tail通过使用$$.

随意评论我的不良做法 -bash是我较新的语言之一,建设性的批评是改进的最快方法。