Transcrição do áudio
Vamos ver então como é feita a tratativa do sinal dentro de um processo. Vamos entender o código FOLT e você vai naturalmente ter umas ideias bacanas. Você vai até poder fazer o seu próprio NORUP. NORUP é um comando muito útil quando nós queremos fazer com que um processo não seja finalizado caso o terminal caia. Então eu imagino que eu estou fazendo uma backup e aí eu executo o comando NORUP seguindo o comando da backup. Se minha sessão cair, a backup continua acontecendo, mas como eu executei o comando NORUP, é natural que ele adivinha. Na verdade eu, usuário, eu sei que eu executei o comando de backup. Então é natural que eu não vou executar de novo quando eu retomar a minha sessão, porque eu sei. Afinal, eu chamei o NORUP. Então vamos lá. Funções que podem ser adicionadas via programação. Aguardar um sinal, dar um kill, um kill na thread, pausar, suspender ou até mesmo enviar um sinal de uma falha de um raise. Por exemplo, raise a new exception. Então vamos lá. Então eu tenho aqui um programa só para vocês terem uma noção de como funciona. E isso, eu vou ter que importar a biblioteca, no caso a biblioteca estática lá, né. É seguir a CSI, não, desculpa, CSIGNAL, beleza? É um monte de sigla, deslixia do caramba. E a UNISTD, ponto H. Estou criando aqui o namespace STD. E aí, olha só, eu crio uma função que eu posso dar o nome que eu quiser. Mas a galera, por padrão, coloca... Coloca SIGNAL alguma coisa. Beleza? Aqui eu simplesmente chamei de SIGNAL HANDLER. Que é um evento de sinal. Quer dizer que sempre que acontecer um determinado evento, essa função vai ser executada. Repare, não é um nome que vai ligar ela ao evento. Vai ligar ela ao evento é a linha 12. A linha 12 é que liga ela ao evento. Então vamos lá. Quando esse evento acontecer... Ele vai colocar na mensagem, dizer, olha, aconteceu isso. E aí, a linha 8, eu dou um EXIT. O mesmo sinal que eu recebi, eu dou um EXIT aqui, legal? Vamos lá. Se você comentar a linha 8 e for o SIGNAL INCH, se for o SIGNAL TERM, por exemplo, então, também, o processo não vai sair de execução. Ele vai ficar chumbado lá. Consumindo recurso. Beleza? Se você comentar a linha 8. É assim que você faz com que um processo não saia da memória por resabraba nenhuma. Lógico, né? O SIGNAL KILL consegue derrubar isso. 9. O número 9. Então vamos lá. Aqui, olha só. Depois, então, o INMEM... Eu executo a chamada, que é o SIGNAL, que está definido dentro do C-SIGNAL. Beleza? Passando o número INCH, SIGNAL INCH, que é uma constante. Você poderia colocar direto o número aqui, tá? Sem nenhum problema. E qual a função que vai executar caso esse número seja enviado como sinal para esse processo. Cara, essa cadeira está barulhenta, meu. Eu trabalho numa cadeirinha de plástico velha, você não faz ideia. Eu vou queimar essa porra é hoje. Está me tirando sério aqui. Logo a seguida aqui nós temos um IOTRUN só para segurar a execução. Só para segurar a execução. Esse INSTD aqui é para eu poder usar o SLEEP. Tá? SLEEP aqui de um segundo. Eu fico aqui nessa execução contínua, eterna. E aí na hora que alguém emitir o sinal seguinte, então isso aqui é executado e o processo sai. E aí na hora que alguém emitir o sinal seguinte, então isso aqui é executado e o processo sai. Então isso aqui é executado e o processo sai. Então isso aqui é executado e o processo sai. E finaliza o laço de repetição, legal? Funciona assim. Bom, para para compilar você naturalmente não precisa de colocar nenhuma biblioteca extra. Porque o seu sistema vai ter todas essas bibliotecas. Então é só você compilar com G++ dessa forma e executar лежal? Eu vou pausar o vídeo que eu vou trocar essa cadeira dos infernos que eu vou tacar fogo nessa porra aí agora. que eu vou tacar fogo nessa porra aí agora Próximo vídeo eu falo o que eu fiz com a cadeira. Até mais. Tchau.