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 '>'.
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?
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?
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 '>'.
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.