------------------ 第一版 -----------------------------------------------------
import sys
import select
from time import sleep
import termios
import tty
old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())
while True:
sleep(.001)
if select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
#c = sys.stdin.read(1)
rls = sys.stdin.read(3)
print(rls)
#if c == '\x1b': break
if rls == 'rls': break
#sys.stdout.write(c)
sys.stdout.write(rls)
sys.stdout.flush()
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
print(raw_input('123:'))
----------------------------- 第二版 ----------------------------------------------------------
import sys
import select
from time import sleep
import termios
import tty
from threading import Thread
import time
import Queue
msg_queue = Queue.Queue(10)
def run():
for i in range(1,1000):
print("work" + str(i))
if not msg_queue.empty():
print(msg_queue.get())
time.sleep(2)
tt = Thread(target=run)
tt.daemon = True
tt.start()
old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())
while True:
sleep(.001)
if select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
#c = sys.stdin.read(1)
#rls = sys.stdin.read(3)
line = sys.stdin.readline().strip()
#print(rls)
print(line)
#if c == '\x1b': break
#if rls == 'rls': break
if line == 'rls': break
#msg_queue.put(rls)
msg_queue.put(line)
#sys.stdout.write(c)
#sys.stdout.write(rls)
#sys.stdout.flush()
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
#print(raw_input('123:'))
第二版,实现了主进程和子进程,通过 队列 交互消息, 将子进程设置为守护进程(辅助进程)的作用,当主进程结束,守护进程也跟着结束
在这个思路上,还可以增加 LOGGRE 写日志进程
浙公网安备 33010602011771号