Jump to content

Buffered/unbuffered stdin


Dr_Lion
 Share

Recommended Posts

Ora mais uma vez boa tarde a todos.

A minha dúvida hoje prende-se com o método para efectuar uma leitura do teclado (standard input), mas sem que o programa fique em espera por causa dessa mesma leitura.

A ideia seria dentro de um ciclo, ter uma leitura, e depois o resto do processamento do ciclo, no entanto se o utilizador não introduzir nada o ciclo segue o seu caminho, e quando o utilizador introduzir uma tecla ela será tratada quando o ciclo voltar a passar por esse ponto.

Isto é o que preciso de fazer, no entanto não sei bem por que palavras pesquisar, e na net também não me estou a safar muito bem, alguém tem sugestões?

Creio que não é necessário recorrer a coisas complexas como threads e afins.

Desde já agradeço a todos pelo tempo dispensado.

Link to comment
Share on other sites

Ora bem, respondendo ás várias questões, já encontrei umas soluções  em código na net e afins.

Agora não estou no pc onde tenho as funções, mais tarde já as posto. o sistema que uso é o ubuntu 10.04 - 11.10

Decidi recorrer á função kbhit disponível no borland ou no dev C para windows, para linux tive que criar a "minha" biblioteca.

Basicamente a funcão kbhit() verifica se uma tecla foi premida sem bloquear o programa à espera que essa mesma tecla seja premida.

Também experimentei outra função, a getch, para ler a tecla sem que esta fosse escrita na consola, no entanto, combinando as duas funções o resultado não era o esperado,( nomeadamente o programa ficava bloqueado á espera que introduzisse uma tecla) pelo que abdiquei da função getch.

Não foi necessário recorrer a threads e afins, nem á biblioteca ncurses, pois também li que era possível só funcionar nas janelas.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.