Enviar quit keystroke (Q + Enter) para programar após a execução por um determinado período de tempo

0

Alguns programas terminais param de pressionar a tecla com segurança para interromper sua execução, por exemplo:

Q + Digite

De esta pergunta aprendi que o comando timeout permite enviar sinais para um programa depois de um especificado quantidade de tempo, mas, tanto quanto eu sei, nenhum desses sinais é equivalente ao quit keystroke que estou me referindo.

A lista de sinais pode ser mostrada com o comando kill -l :

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    

Eu gostaria de enviar o pressionamento de tecla quit ( echo a letra q ) para um programa após um determinado período de tempo para interromper um programa com segurança.

Como posso fazer isso?

    
por codeaviator 09.03.2018 / 18:20

1 resposta

3

Pressionar uma tecla e um sinal são duas maneiras diferentes de se comunicar com um programa. Se há um sinal que é equivalente a um pressionamento de tecla para um determinado programa, é porque o autor do programa o projetou dessa maneira.

Existem algumas chaves que o próprio terminal traduz em um sinal, como Ctrl + C para SIGINT. O programa pode alterar as configurações do terminal para capturar esses pressionamentos de teclas em vez de permitir que o terminal os traduza para um sinal. O mesmo mecanismo de terminal permite que uma chave (normalmente Ctrl + D ) seja traduzida para o final da entrada (somente quando é pressionada no início de uma linha). Isso não é um sinal: significa que o programa recebe uma indicação de fim de arquivo quando tenta ler a entrada do terminal.

Quando um terminal desaparece, o kernel envia o sinal SIGHUP para o programa de primeiro plano em execução no terminal, se houver algum (e se for um shell, o shell reenviará o sinal para o seu trabalho em primeiro plano). HUP vem de “(modem) desligamento”, e no mundo moderno se aplica em casos como o fechamento de uma janela de terminal em uma GUI. Muitos programas captam este sinal e desligam com segurança, portanto, se for mais conveniente enviar um sinal do que enviar dados, tente se isso funcionar no seu programa.

Se você precisar enviar informações, a maneira mais fácil é executar o programa na Tela e usar screen -X como enviar entrada para a sessão de tela ( exemplo ).

    
por 10.03.2018 / 02:13