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.