问题标签 [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 投票
2 回答
179 浏览

c - 用于服务器侦听功能的 C 中的测试单元。避免监听阻塞呼叫

我正在为名为 pkg_getclient () 的函数编写一个测试单元。基本上,它是一个为客户端无限监听的函数。
这是实现: http ://slexy.org/view/s21RBuOUOu (粘贴在那里以保持问题文本大小合理)

这是客户端-服务器测试的示例: http: //slexy.org/view/s2fS5hBkgI

这是我的单元测试的当前状态:

我需要中断 pkg_getclient() 阻塞调用。它还需要移植到 Windows,而不仅仅是基于 unix 的系统。我无法修改 pkg_getclient() 函数。阻塞函数getclient() 内部。

有没有办法使用信号处理来中断阻塞调用?或者有没有其他方法可以解决这个问题?

0 投票
2 回答
643 浏览

c - 我们应该在信号处理程序中使用 perror

我们应该使用perror内部信号处理程序,因为它们具有用户空间缓冲区printf和其他 stdio 函数吗?

0 投票
1 回答
1662 浏览

linux - 检查已安装的信号处理程序

我有一个库,它为 SIGSEGV 安装信号处理程序以进行调试。SIGSEGV 处理程序只是打印一些信息然后退出程序。

最近,我需要从 Java 调用这个库(使用 JNI),我遇到的问题是 JVM 还为 SIGSEGV 安装了一个信号处理程序,用于比我更有用的目的。

所以我要选择的操作是,如果我的库发现已经为信号安装了信号处理程序,它根本不会安装任何信号。

为清楚起见,我使用的是 sigaction 调用。

现在要实现我的功能,我要做的是:

一种。屏蔽所有信号。

湾。调用 sigaction 并检查 oact 是否返回有效的处理程序。

C。如果是这样,请使用 oact 重新调用 sigaction 作为新行为。

d。UNBLOCK 信号。

B和c对我来说似乎很麻烦。我想要的是能够确定一个特定的信号是否已经有一个处理程序,而无需先替换处理程序,然后用原始处理程序重新替换它(什么都没有)。

还有什么比 sigaction 更细粒度的吗?

0 投票
4 回答
70764 浏览

unix - SIGSTOP 和 SIGTSTP 有什么区别?

只是想知道 SIGSTOP 和 SIGTSTP 信号之间的区别。

0 投票
2 回答
3198 浏览

python - Python-QTableWidget:单击标题中的排序时如何捕获信号

在用我self.ui.tableWidget.resizeRowToContents为每一行使用的一些文本填充 tableWidget 时。之后:self.ui.tableWidget.setSortingEnabled(1),排序按预期工作,但行不再根据内容调整大小,实际上它们保留了以前的高度。

我的想法是在单击标题排序时捕获信号,然后再次self.ui.tableWidget.resizeRowToContents 遍历所有行。 如何捕捉到这个信号?

0 投票
3 回答
238 浏览

c - 在信号处理程序中仍应避免使用全局变量但退出的函数?

当我研究了一些关于用 C 进行 unix 编程的知识时,我了解到在信号处理程序中应该避免无法重入的函数,但是如果我有类似的东西:

myExit 在哪里

并且 fileFd 是一个全局变量,如果我没记错的话,这使得 myExit 成为不可重入的......但在信号处理程序中使用它仍然是一个问题,即使它会导致程序退出?谢谢,如果这是一个愚蠢的问题,任何帮助表示赞赏和抱歉。

0 投票
1 回答
462 浏览

python - python子进程避免子进程的信号处理

好吧,我在脚本中有一个 usr1 信号处理程序。通过从外部向我的脚本发送一个 SIGUSR1,我的处理程序完成了它的工作,但信号也传播到了我通过 Popen 创建的孩子。我怎样才能做到这一点?

0 投票
1 回答
668 浏览

c - 从信号处理程序上下文中获取 ARC 平台的回溯

我想SIGSEGV在程序退出之前在日志中捕获并打印回溯。这是为了在稍后的时间点分析崩溃。我正在开发一个在多个平台上运行的软件。在 x86 平台上,我可以使用 glibcbacktrace()函数轻松完成此操作。但同样不适用于 MIPS 和 ARC 平台。我能够打印 MIPS 架构的回溯,如此处所述

我也想为ARC 平台做类似的事情。如果有人可以提供一些关于我在哪里可以获得类似详细信息的数据点,那将是非常有帮助的。

编辑:

经过一番研究,我发现在函数调用的 ARC 平台中,堆栈不是一次分配的,而是部分分配的。(如果我错了,请纠正我。我通过对象转储并弄清楚了这一点。)所以我觉得在这种情况下,与 MIPS 相比,很难进行二进制代码解析。

另一种方法是在 C 中编写一些内联汇编并获取堆栈指针、帧指针和分支链接寄存器内容(闪烁),然后尝试使用堆栈和帧大小以及每帧中的闪烁值来展开堆栈。但我无法找到框架大小。

这是获取 FP、SP、BLINK 的示例代码。

是的,这不是好的编码!我做了很多假设。但对我来说,只要它在我的板上工作就很好。:)

任何帮助将不胜感激。是关于 ARC gcc 的另一个参考资料。

0 投票
1 回答
373 浏览

python - 用于信号处理和用户管理的 Python Unix/Windows 抽象层

我想问一个问题,我广泛的网络搜索表明答案是否定的,但也许我忽略了一些东西......

是否有 Python 抽象层位于 Unix 和 Windows 信号处理(用于衍生的独立进程)和用户管理(获取用户和组条目、比较它们等)之上?

是的,我知道 Windows 和 Unix 在这两个方面根本不同,但操作系统特定的方法确实完成了类似的任务。所以创建一个抽象层似乎不是一个坏主意。

我发现最接近我正在寻找的东西,至少对于子流程管理(并且在一定程度上“发信号”那些子流程),是 python-multiprocessing,即http://docs.python。 org/dev/library/multiprocessing.html - 这是我正在寻找的那种抽象,但它并不完全符合我的要求。

任何指向这个方向的指针?

使 Windows 上的信号处理/用户管理看起来像 Unix 或反之亦然的模块也可以。

0 投票
1 回答
5923 浏览

c - c中的子进程信号处理

我需要你的帮助来完成我关于进程之间信号处理的练习。我认为这是一个微不足道的问题,但我无法在任何地方找到答案。我想在文件中从父级打印一些东西,从父级向子级发送信号,子级必须在文件中打印,然后从子级向父级发送信号。

我正在使用的代码是这样的: