Se um programa depende do tempo físico, ele deve verificar periodicamente o relógio. A menos que este seja um programa em tempo real rodando em uma versão do Linux com patches de kernel para garantias em tempo real, um processo pode ser parado de ser executado por um período de tempo arbitrário pelo agendador. Um processo também pode ser interrompido por um sinal STOP (ele pode saber disso colocando um manipulador no sinal CONT enviado para retomá-lo).
Se o software precisar saber apenas que um longo período de tempo se passou, ele pode colocar um timer para ativá-lo. No entanto, o exemplo que você dá precisa saber mais do que isso: ele precisa estar ciente das alterações de configuração de rede, por exemplo. Para um programa desse tipo, conectar-se a eventos de suspensão / reinício do sistema fornece mais informações do que simplesmente detectar saltos de tempo.
Conectar-se a um sistema suspender / retomar eventos requer privilégios de root ou executar dentro de uma sessão com acesso ao D-Bus. (Eu não sei em quais eventos do D-Bus você precisa se inscrever.)
Conectando-se ao sistema suspender / retomar eventos tem a vantagem de poder executar o código na suspensão, não apenas no reinício.