Abrindo dispositivo de caractere para leitura em paralelo por múltiplos processos no Linux

1

Gostaria de abrir um dispositivo de caracteres, por ex. /dev/tty1 por vários processos de uma maneira que não interferiria nas leituras entre eles. Notei que, se um processo consome um byte, nenhum outro processo o receberia.

Detalhes do problema: Estou escrevendo o aplicativo de console no Linux, que requer o recebimento de: pressionamentos de tecla e lançamentos de chaves. Eu já consegui mudar do modo de terminal padrão K_XLATE para K_RAW mode usando ioctl(fd,KDSKBMODE,K_RAW) no /dev/tty1 recém aberto. Infelizmente, a leitura desse descritor resultou em bytes ausentes, pois o mc tenta interceptar Ctrl+O de pressionamentos de tecla em paralelo (para colocar sua interface no topo ou ocultá-la) lendo o mesmo dispositivo.

Então, eu também tentei ler dados do canal stdin pseudo terminal criado por mc (depois de configurar /dev/tty para K_RAW mode). Quase funcionou, exceto que agora tenho colisão de Ctrl+O código de caractere 0x0F com o scancode da tecla Tab (também 0x0F ).

Estou à procura de solução para esse problema de interferência de uma forma que não requer mais privilégios do que cap_sys_tty_config , por isso, acessar /dev/input para ler diretamente o teclado não é o melhor caminho para mim.

    
por Anonymous 12.03.2018 / 20:18

0 respostas