问题标签 [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.
c - pthread_sigmask 干扰 GDB
我一直在 Linux 下开发一个多线程程序,对信号处理有特殊要求。例如,我需要程序打印单个 Ctrl-C 输入的统计信息。
我使用 pthread_sigmask 和 sigwait 实现了这一点,即在创建其余线程之前阻塞主线程中的所有非关键信号,并启动一个在 sigwait 上阻塞的“捕获器”线程。
初始化(主要):
捕手线程例程:
一切都按预期工作,但我的捕获机制阻止 GDB 暂停程序(触发 SIGINT 例程)。我怎样才能解决这个问题 ?
谢谢
java - Cygwin CTRL-C(信号中断)无法正常工作 - JVM 关闭挂钩未启动
我正在开发一个 Java 应用程序,它利用关闭挂钩来清理程序的终止/中断,但我注意到 Cygwin 的 CTRL-C 实现似乎不会触发关闭挂钩。从表面上看,它似乎已经中断了进程,将控制权交还给了命令行,但是根本没有触发进程的关闭挂钩,因此不会发生清理。
在 cmd 他们被抓住了,但由于各种限制,我需要以某种方式让他们在 Cygwin 中工作。
有没有办法通过 Cygwin 在正在运行的进程中触发 SIGINT,或者可能是我可以用来清理中断和终止的关闭挂钩的替代方法?
c++ - 我可以将参数传递给 SIGINT 吗?
我正在尝试传递一些额外的参数,以便它们可以在我的程序的 SIGINT 调用中使用,但是我得到一个编译错误,这实际上是可以实现的还是我被误导了?
如果可以实现,有人可以在这里解释我的错误吗?
我在编译时收到以下错误;
指 main() 中的这一行;
ios - 在 iOS 模拟器中启动的间歇性 SIGINT
有时,当我在模拟器中运行我的应用程序时,它会在启动时冻结,并带有SIGINT
. 它中断的行是多种多样的,但它们包括系统库调用libsystem_c.dylib'pthread_rwlock_unlock$UNIX2003:
和我自己的代码中的调用,比如self.view.layer.shadowRadius= 6.0f;
or button= [[UIButton alloc] initWithImage:image];
。这种行为是不可预测的,我无法弄清楚是什么原因造成的。这不会在设备上发生。
SIGINT
如果断言失败,我偶尔会在我的代码中使用来杀死调试版本中的应用程序,但这个问题永远不会发生在这些行之一上或附近。
c - sigint 调用多次而不是一次 (C)
这是我的代码片段:
和函数 sig_handler:
当我按下“CTRL+C”时会出现问题,因为 sighandler 被多次调用。
例子:
- 服务器正在监听;
- 2 x 收到连接;
- 2 个儿童叉;
- 2 x 孩子已关闭;
- 现在我想关闭服务器,所以我按 CTRL+C;
预期输出:
received SIGINT, exiting....
真实输出:
received SIGINT, exiting....
received SIGINT, exiting....
received SIGINT, exiting....
为什么我会出现这种行为?
编辑:代码更新
这是当 1 个分叉完成并且孩子完成后我关闭服务器时发生的情况:
exit(0)
解决方案:问题是我在指令之后没有写do_child()
...代码更新了!
bash - SIGINT 取消在 bash 脚本中读取?
我正在编写一个 bash 包装器来学习一些脚本概念。这个想法是在 bash 中编写一个脚本,并在登录时将其设置为用户的 shell。
我做了一个 while 循环read
s 和eval
s 用户的输入,然后注意到,每当用户键入CTRL + C
时,脚本都会中止,因此用户会话结束。
为了避免这种情况,我陷入SIGINT
了陷阱,在陷阱中什么也不做。
现在,问题是当您键入CTRL + C
命令的一半时,它不会像在 bash 上那样被取消 - 它只是忽略CTRL + C
.
所以,如果我输入ping stockoverf^Cping stackoverflow.com
,我得到ping stockoverfping stackoverflow.com
的不是ping stackoverflow.com
我想要的。
有没有办法做到这一点?
c - 输出重定向时 SIGINT 丢失;如何检测程序中的终止?
我编写了检测 SIGINT 的控制台程序,因此当用户按下 Ctrl+C 时,程序会执行一些操作并终止。
但是当我用管道将这个程序重定向到任何其他程序时,例如:
./my_program | tee xxx
SIGINT 永远不会出现在我的处理程序中。尽管这个程序终止。处理 SIGTERM 没有任何效果。SIGTERM 也不会出现在 Ctrl+C 之后。
如何在所有情况下检测到该程序被 Ctrl+c 中止?
我的 SIGINT 和 SIGPIPE 测试用例:
telnet - telnet 捕获 ctrl+c 服务器
我已经写了一个像这里这样的套接字服务器。如果我输入ctrl+c
telnet,服务器现在什么都不做。我想抓住它,signal(SIGINT,SIG_IGN)
我该怎么办?
matlab - 反复按 ctrl+c 有什么意义吗?
经常(例如使用matlab)我不小心执行了一些程序。我尝试通过按 CTRL+C 来中断它。有时这有效,有时则无效,我一直疯狂地点击它,直到程序最终停止。这些额外的 ctrl+c 是在做什么,还是只是一场雨舞?
bash - 确保破坏bash中的进程?(可能捕捉到 SIGINT)
我正在尝试设置一个 IO 脚本以允许两个 FIFO 之间的输入/输出通信(一个 FIFO 用于输入,另一个用于输出)。
在我输入输入时,我的服务器必须接收输出。两者Internals/servout
都是Internals/servin
FIFO。我目前通过tail
在等待输入时在后台运行来实现这一点。
这是我当前的代码:
我遇到的主要问题是当我不小心键入 Ctrl-C 来结束我的脚本时。发生这种情况时,tail -f -n 0 Internals/servout &
代码将继续在后台运行。正如您可能想象的那样,这是不可取的。
有没有办法确保tail
命令被杀死,即使发送了 SIGINT 或类似的信号?finally
我正在考虑一些可以与Python 中的关键字具有相同目的的东西,或者tail
通过使用$$
.
随意评论我的不良做法 -bash
是我较新的语言之一,建设性的批评是改进的最快方法。