mantém o prompt apesar do fluxo de saída

5

Versão curta

Posso manter um símbolo de entrada ( > por exemplo) na parte inferior do terminal para que o usuário possa inserir apesar do fluxo de texto acima?

Versão longa

Eu estou fazendo um aplicativo multi-processo que basicamente lida com o fluxo de texto (com entrada e saída telnet em um futuro próximo). Eu coloquei um símbolo de prompt > com printf para dizer ao usuário que ele pode escrever. Mas, se algumas crianças responderem um pouco tarde à entrada anterior, a saída será gravada após esse prompt e, mesmo que tecnicamente ainda funcione, isso não é muito prático.

Existe uma maneira de manter uma linha vazia com um prompt para digitar mesmo se o texto estiver "rolando" acima?

    
por Nemecle 22.10.2015 / 17:45

2 respostas

1

Você pode criar um objeto wrapper que serialize todos os fluxos de saída. É provável que você precise de mutexes para sincronizar isso.

Você pode imprimir um '>' depois que cada criança processar a saída, a última linha será sempre a '>'.

    
por 22.10.2015 / 18:03
0

Para a versão dead-simple que "apenas mantém a linha de prompt após a linha de saída mais recente", você pode fazer algo como gerar sempre "\routput here\n> " (para sobrescrever a linha de prompt mais recente, gravar saída e gravar um nova linha de prompt). Se você quiser que o usuário consiga manter a entrada deles nas novas linhas de saída, você precisará fazer algo extravagante um pouco como readline / libedit . (Na verdade, pode haver uma opção para fazer isso; não tenho certeza.) O processo geral seria entrar no modo cbreak / raw, manter um buffer na memória de apenas o que o usuário digitou e, em seguida, exportá-lo novamente após o aviso sempre que você escrever uma nova linha de saída.

    
por 22.10.2015 / 18:06