5.4 talk_base::PosixSignalHandler
talk_base::PosixSignalHandler和talk_base::PosixSignalDispatcher这两个类只有Linux版本。并且在整个WebRTC的源代码中没有任何地方使用过这两个类。因此,对它们的代码分析主要是为了帮助Windows开发人员从实用的角度学习如何使用Linux平台下的部件。
talk_base::PosixSignalHandler类主要实现了将Linux的Signal机制纳入到多路分离器的架构中去。对于Windows开发人员来说,Signal机制是一个比较陌生的东西。而且对它的处理比较麻烦。因为Signal会在程序运行的任何时候出现,一旦触发就会调用注册的处理函数,开发人员没法假定这时程序中哪些工具是否可用。正如在talk_base::PosixSignalHandler::OnPosixSignalReceived函数的注释中所说的在出错的时候我们甚至无法记录log:
// Nothing we can do here. If there's an error somehow then there's
// nothing we can safely do from a signal handler.
// No, we can't even safely log it.
此外,Linux的有些signal相关的函数在不同版本的Linux/Unix平台以及的表现完全不同。因为,signal机制是一个古老的历史遗留问题,在当年Unix主导一切,各个大公司又各自为战的年代,要提供一个公认完备的标准确实不易。幸运的是从WebRTC的代码来看,几乎没有什么组件使用了s