출력 트래픽이 적시에 유지되지만

출력 트래픽이 적시에 유지되지만

간결한 버전

>텍스트가 위에 흐르더라도 사용자가 입력할 수 있도록 터미널 하단에 입력 기호(예:)를 유지할 수 있습니까?

긴 버전

저는 기본적으로 텍스트 스트리밍을 처리하는 다중 프로세스 응용 프로그램을 만들고 있습니다(가까운 미래에 입력 및 출력에 텔넷을 사용할 예정입니다). 나는 printf를 사용하여 >사용자에게 글을 쓸 수 있다는 것을 알려주는 프롬프트 기호를 넣었습니다 . 그러나 일부 어린이가 이전 입력에 조금 늦게 응답하는 경우 프롬프트 후에 출력이 작성되므로 기술적으로는 여전히 작동하지만 실용적이지 않습니다.

텍스트가 "스크롤"되는 경우에도 빈 줄을 유지하고 입력하라는 메시지를 표시하는 방법이 있습니까?

답변1

모든 출력 스트림을 직렬화하는 래퍼 개체를 만들 수 있습니다. 동기화하려면 뮤텍스가 필요할 수 있습니다.

그런 다음 각 하위 프로세스 출력 후에 ">"를 인쇄하여 마지막 줄이 항상 ">"가 되도록 할 수 있습니다.

답변2

"항상 가장 최근 출력 줄 다음에 프롬프트 줄을 유지합니다"의 매우 간단한 버전의 경우 항상 출력과 같은 작업을 수행할 수 있습니다 "\routput here\n> "(가장 최근 프롬프트 줄을 덮어쓰고 출력을 쓴 다음 새 프롬프트 줄을 씁니다). 사용자가 새로운 출력 라인에서 입력을 유지할 수 있도록 하려면 readline/ 와 같은 작업을 수행해야 합니다 libedit. (실제로 이 작업을 수행하는 옵션이 있을 수 있습니다. 확실하지 않습니다.) 일반적인 프로세스는 cbreak/raw 모드로 이동하여 사용자 입력의 메모리 버퍼를 유지한 다음 새 출력 라인을 작성할 때마다 이를 출력하는 것입니다. . 메시지가 나타나면 이 작업을 다시 수행하세요.

관련 정보