간결한 버전
>
텍스트가 위에 흐르더라도 사용자가 입력할 수 있도록 터미널 하단에 입력 기호(예:)를 유지할 수 있습니까?
긴 버전
저는 기본적으로 텍스트 스트리밍을 처리하는 다중 프로세스 응용 프로그램을 만들고 있습니다(가까운 미래에 입력 및 출력에 텔넷을 사용할 예정입니다). 나는 printf를 사용하여 >
사용자에게 글을 쓸 수 있다는 것을 알려주는 프롬프트 기호를 넣었습니다 . 그러나 일부 어린이가 이전 입력에 조금 늦게 응답하는 경우 프롬프트 후에 출력이 작성되므로 기술적으로는 여전히 작동하지만 실용적이지 않습니다.
텍스트가 "스크롤"되는 경우에도 빈 줄을 유지하고 입력하라는 메시지를 표시하는 방법이 있습니까?
답변1
모든 출력 스트림을 직렬화하는 래퍼 개체를 만들 수 있습니다. 동기화하려면 뮤텍스가 필요할 수 있습니다.
그런 다음 각 하위 프로세스 출력 후에 ">"를 인쇄하여 마지막 줄이 항상 ">"가 되도록 할 수 있습니다.
답변2
"항상 가장 최근 출력 줄 다음에 프롬프트 줄을 유지합니다"의 매우 간단한 버전의 경우 항상 출력과 같은 작업을 수행할 수 있습니다 "\routput here\n> "
(가장 최근 프롬프트 줄을 덮어쓰고 출력을 쓴 다음 새 프롬프트 줄을 씁니다). 사용자가 새로운 출력 라인에서 입력을 유지할 수 있도록 하려면 readline
/ 와 같은 작업을 수행해야 합니다 libedit
. (실제로 이 작업을 수행하는 옵션이 있을 수 있습니다. 확실하지 않습니다.) 일반적인 프로세스는 cbreak/raw 모드로 이동하여 사용자 입력의 메모리 버퍼를 유지한 다음 새 출력 라인을 작성할 때마다 이를 출력하는 것입니다. . 메시지가 나타나면 이 작업을 다시 수행하세요.