在基本的Unix shell應用程序中,如何打印標準輸出而不干擾任何未決的用戶輸入。在命令行應用程序中打印標準輸出而不覆蓋等待的用戶輸入
例如下面是一個迴應用戶輸入的簡單Python應用程序。在後臺運行的線程每1秒打印一次計數器。
import threading, time
class MyThread(threading.Thread):
running = False
def run(self):
self.running = True
i = 0
while self.running:
i += 1
time.sleep(1)
print i
t = MyThread()
t.daemon = True
t.start()
try:
while 1:
inp = raw_input('command> ')
print inp
finally:
t.running = False
請注意線程在輸入時如何破壞顯示的用戶輸入(例如hell1o wo2rld3)。你將如何解決這個問題,以便shell在寫入新行時保留用戶當前正在輸入的行?