Terminar a digitação no terminal com chamada ao sistema read() sem digitar enter

Iniciado por JFALVES, 27 de Outubro de 2012, 20:46

tópico anterior - próximo tópico

JFALVES

Preciso de um programa em C que leia uma sequência de caracteres digitados pelo usuário até que uma flag seja lida, no caso, '*',  porém, esse programa só pode ser realizado com chamadas de sistema Linux, sem usar as funções de C de I/O. Estou usando a função read,  e consegui fazer com que ela leia e considere somente os caracteres digitados até o *, porém, a não ser que o usuário tecle enter, o programa continua liberando a digitação.
O trecho de código está abaixo, se puderem me ajudar desde já agradeço.

    while (1) {
      if(read(0, buffer+escritos_no_buffer, 1) > 0); //Lê da entrada padrao um caracter por vez, armazenando no vetor buffer         
      if(buffer[escritos_no_buffer] == '*'){ //Se a flag ('*') for digitada
         break; //encerra a leitura
      }
      escritos_no_buffer += 1; //Caso contrário, atualiza a quantidade de caracteres lidos
    }