Я написал программу, которая записывает системный сигнал «ctr + z» и обрабатывает его функцией.Код после функции дескриптора является функцией raw_input ().Я обнаружил, что после обработки захвата сигнала подсказка ввода функции raw_input () не появляется, пока я не нажму клавишу «ввод».в чем проблема?
мой код:
import signal
import re
import os
import readline
import shareApi
def handler(signum, frame): # ctr + z signal is 20
if signum == 20:
path = '/usr/local/tmpConfigFile/signal.data'
shareApi.writeStringToFile(path, str(signum))
def main():
signal.signal(signal.SIGINT, signal.SIG_IGN)
signal.signal(signal.SIGTSTP, handler)
prompt = "$"
while True:
path = '/usr/local/vSw/tmpConfigFile/signal.data'
if os.path.exists(path):
signum = vSwRouterShareApi.readFileToString(path)
if signum == "20":
prompt = "#"
os.system("/bin/rm -f " + path)
os.write(0,"^Z\n")
try:
cmdstr = raw_input(promot) # label
print cmdstr
except:
print ""
continue
"""
- если не импортировать модуль readline, программа в порядке;
- программа заблокирована на метке, она продолжаетсяпросыпается до тех пор, пока не будет введен ключ ввода
- Я пытаюсь использовать функцию os.write () write stdin, ожидаю, что функция raw_input () может читать stdin, но не удалось.
В чем проблема?Как это исправить?