1

这是关于设计决策并了解采用其他服务的利弊。所以我们有两个服务和两个不相关的服务器,一个监听端口 10000,另一个是 xinetd 服务器通过 3 个不同的端口响应 3 个不同的请求(它的客户端使用 nc 服务器端口 1|端口 2|端口 3 来检索数据)。

有一天,因为安全问题,xinetd 服务器不得不停止,因为第一台服务器保留了相同的数据,我们决定采用 xinetd 服务器,向第一台服务器发送 USR1 信号,让它暴露相同的公共数据。因此,需要添加逻辑来重新定义第一台服务器中的信号处理。我们计划使用 USR1 (10, 16, 30) 例如,在 xinetd 服务器中, kill -10 first_server 会让第一台服务器吐出与旧服务器过去发出的相同的数据,并且仍然转储到第一个端口. 争论是这是一个糟糕的设计,因为它滥用了 unix 信号使用,当然还重新定义了 POXIS 和 Linux 预定义的 10、16 和 30 符号行为。这在技术上真的很糟糕吗?会对系统造成什么危害?

4

1 回答 1

1

10 是 SIGBUS,一个总线错误——你可能不应该碰那个。30 和 31 是 SIGUSR1 和 SIGUSR2,它们是用户定义的,不为任何特定目的保留。16 是 SIGURG,socket 上的紧急数据,你可能不需要,但最好使用 31 以上的实时信号。

于 2009-05-30T02:53:07.690 回答