问题标签 [signals]

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 投票
4 回答
4190 浏览

windows - TerminateProcess 与 Ctrl+C

我有一个使用 SQLite3 来维护数据库文件的控制台模式程序。执行需要一段时间,但在任何时候取消都应该是安全的,假设数据库写入发生了。(这都是Windows下的)

从正在运行的程序的角度来看,CtrlC在控制台中点击是否比让另一个程序在其上调用 TerminateProcess 更安全?

我注意到,如果调用 TerminateProcess,我可能会损坏数据库——我认为这是因为程序没有机会完成写入。我的猜测是CtrlC更好,因为程序收到一个信号并自行终止,而不是操作系统杀死它。

请注意,程序实际上并不处理信号(除非 SQLite 处理);我说的是 Win32 可执行文件的内置默认机制来处理CtrlC信号。

为了澄清/简化问题 - 鉴于此写入刚刚执行:

在此写入期间, TerminateProcess 的行为是否会与CtrlC?

0 投票
2 回答
1648 浏览

python - Python 线程 + Unix 信号语义是什么?

围绕 Python 线程的规则是什么以及如何处理 Unix 信号?

是由 Python 运行时KeyboardInterrupt触发SIGINT但在内部处理的,处理方式不同吗?

0 投票
1 回答
1501 浏览

linux - 在 Linux 中增加文件描述符的数量

我有一个长时间运行的进程来监视系统并打印定期日志。如果我让它运行超过 10-15 分钟,它会退出并显示一条消息:打开的文件太多。

该程序使用实时 timer_create() 和 timer_settime() 设置,每 2 秒引发一次 SIGUSR1。在处理程序中,子进程中有一个 fork()-exec() 父进程和后续 mmap() 以及 /proc/acpi/battery/state 和 /sys/devices/system/cpu/cpu0 上的流操作有一个等待/cpufreq/scaling_cur_freq 和 scaling_setspeed 文件。我已经注意在周期性信号处理程序和所有其他地方关闭流 FILE * 指针。我还确保了所有映射文件的 munmap() 。

我怎样才能解决这个问题?我应该增加允许的最大文件描述符还是应该增加 ulimit -aS 显示的最大打开文件数?如果我使用 fclose() 关闭所有 FILE *,为什么会发生这种情况?

以下是我的系统目前的值:

0 投票
3 回答
1089 浏览

perl - 在 Perl 中忽略信号和告诉它什么都不做有什么区别?

如果我告诉 Perl 显式忽略一个信号,则 SIGINT 无效:

然后按 Control-C,很明显,没有任何效果。另一方面,如果我告诉它什么都不做:

然后按Control-C就有效果了!它从 sleep() 调用中唤醒程序并立即增加计数。忽略信号和告诉它什么都不做有什么区别?

在我的程序中,我想让代码在 SIGINT 上运行,而不会破坏任何东西。我想要类似的东西:

0 投票
1 回答
558 浏览

linux - 什么是 SIGKILL 权限策略?

什么是 SIGKILL 权限策略?

我假设在非 root 上运行时,我无法杀死内核或其他用户的某些内容,但我还没有找到任何关于此的文档。

0 投票
1 回答
1405 浏览

c++ - 关于命名管道,通常如何实现“握手”

我需要在一个使用命名管道与其他进程通信的小型 Linux 程序中实现握手类型协议。我在使用命名管道时搜索了握手类型协议的通用实现模式,但我无法打开任何东西......

我简直不敢相信没有模式可以做到这一点。有人可以指出我可能的资源吗?

完全公开,这是家庭作业,但实施这种模式不是家庭作业。我们需要在作业代码中解决一个问题,我相信这是一个可能的解决方案。作业是用 C++ 实现的——但语言对我来说并不重要。我只是不想重新发明轮子......

更新:我觉得这可以用信号来实现。

我所说的握手是指一个子进程向它的父进程报告它已准备好工作但在父进程发出 go 信号之前不会继续(即使管道中有东西)。在我的工作理论中,我将有许多子进程需要报告就绪等待来自父进程的 go 信号。

0 投票
3 回答
623 浏览

c++ - I/O 信号和处理程序

我想为 UDP 端口指定一个回调,这样每次新数据包到达时,都会为它调用一个处理程序。

我知道使用 fcntl() 来导致文件描述符引发 SIGIO,但是让我们说事情并不是那么简单。我有一个带有套接字 a 的对象 A 和一个带有套接字 b 的对象 B。套接字 a 接收到一个新数据包,因此引发了 SIGIO。但是,这只影响对象 A,与对象 B 无关。

当特定端口接收数据包时,如何确保调用特定函数?

0 投票
3 回答
8323 浏览

audio - 向我解释 FFT

我想获取音频 PCM 数据并在其中找到峰值。具体来说,我想返回峰值出现的频率和时间。

我对此的理解是,我必须获取 PCM 数据并将其转储到一个数组中,将其设置为实际值,并将复杂部分设置为 0。然后我进行 FFT,然后我得到一个数组。如果数组中的每个数字都是一个幅度值,我如何获得与每个数字相关的频率?另外,我是取实数和复数部分的大小还是只丢弃复数?

最后,如果我想在一首歌曲中找到峰值,我是否只需将一个小窗口设置为 FFT 并将其滑过所有音频?关于该窗口应该有多大的任何建议?

0 投票
2 回答
4545 浏览

iphone - 以编程方式获取 iPhone 的运营商信号强度

有没有办法使用 Objective-C 获取 iPhone 的运营商和/或当前信号强度?我知道如何确定是否存在数据连接,以及该连接是 wi-fi 还是蜂窝网络。我还知道您可以通过转到电话应用程序并拨打#3001*12345*# 并点击发送来手动将 iPhone 置于“现场测试”模式。

0 投票
6 回答
7083 浏览

algorithm - 匹配时间相关 (1D) 信号的算法

我想知道是否有人可以向我指出一种用于比较时间相关信号的算法/技术。理想情况下,该假设算法将 2 个信号作为输入并返回一个数字,该数字将是信号之间的相似度百分比(0 表示 2 个信号在统计上不相关,1 表示它们完全匹配)。

当然,我意识到我的请求存在问题,即我不确定如何在比较这两个信号的情况下正确定义“相似性”,所以如果有人也能指出我正确的方向(至于我应该查找/知道的内容等),我也会很感激。