在 linux 中编写一个挂起感知程序

vin*_*oml 5 linux power-management

依赖物理时间的程序,例如 jackd 及其客户端,在 linux 中无法很好地与笔记本电脑的软件挂起配合使用。我想修复一个开始发出大量“计时错误”的客户端,方法是让它在软件挂起之前断开连接并在恢复时重新连接。这可以从客户端完成,而不需要系统配置吗?我知道我可以通过编辑系统脚本来终止程序,但是 linux 中是否有一个界面可以直接等待挂起事件,而无需 root 权限?您是否知道依赖物理时间但正确处理挂起的程序?

Gil*_*il' 0

如果程序依赖于物理时间,则无论如何它都必须定期检查时钟。除非这是在具有实时保证的内核补丁的 Linux 版本上运行的实时程序,否则调度程序可能会在任意长度的时间内停止进程的执行。进程也可能被 STOP 信号停止(它可以通过在发送来恢复它的 CONT 信号上放置一个处理程序来知道这一点)。

如果软件只需要知道已经过去了很长一段时间,它可以设置一个计时器来唤醒它。但是,您给出的示例需要了解的不仅仅是这些:例如,它需要了解网络配置更改。对于这样的程序,挂钩系统挂起/恢复事件比仅仅检测时间跳跃提供更多信息。

挂钩系统挂起/恢复事件需要 root 权限,或者在具有 D-Bus 访问权限的会话中运行。(不知道你需要订阅哪些D-Bus活动。)

挂钩系统挂起/恢复事件的优点是您可以在挂起时运行代码,而不仅仅是在恢复时运行代码。