Escrevendo um programa ciente de suspensão no linux

5

Os programas que dependem do tempo físico, como o jackd e seus clientes, não funcionam bem com o software suspender de um laptop no linux. Eu gostaria de consertar um cliente que começa a emitir muitos "erros de tempo", permitindo que ele se desconecte antes que o software seja suspenso e reconectado no currículo. Isso pode ser feito a partir do cliente, sem a necessidade de configuração do sistema? Eu sei que eu poderia matar o programa, editando os scripts do sistema, mas existe uma interface no Linux para esperar por eventos de suspensão diretamente, e sem permissões de root? Você está ciente de programas que dependem do tempo físico, mas manejam suspender corretamente?

    
por vincenzoml 13.04.2014 / 09:44

1 resposta

0

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.

    
por 14.04.2014 / 02:13