------------------  第一版  -----------------------------------------------------

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 写日志进程

 

posted on 2020-03-26 22:45  yellwonfin  阅读(397)  评论(0)    收藏  举报