Tôi đang làm việc trên một số tập lệnh (trong công ty tôi làm việc) được tải/dỡ vào trình siêu giám sát để kích hoạt đoạn mã khi sự kiện xảy ra. Cách duy nhất để thực sự tải xuống tập lệnh là nhấn Ctrl - C. Tôi đang viết một hàm bằng Python tự động hóa quy trìnhMô phỏng ngắt bàn phím Ctrl-C trong Python khi đang làm việc trong Linux
Ngay sau khi thấy chuỗi "done"
trong đầu ra của chương trình, nó sẽ giết vprobe
. Tôi đang sử dụng subprocess.Popen
để thực hiện lệnh:
lineList = buff.readlines()
cmd = "vprobe /vprobe/myhello.emt"
p = subprocess.Popen(args = cmd, shell=True,stdout = buff, universal_newlines = True,preexec_fn=os.setsid)
while not re.search("done",lineList[-1]):
print "waiting"
os.kill(p.pid,signal.CTRL_C_EVENT)
Như bạn thấy, tôi viết ra trong buff
mô tả tập tin mở ở chế độ đọc + chế độ ghi. Tôi kiểm tra dòng cuối cùng; nếu nó có 'done'
, tôi sẽ giết nó. Thật không may, CTRL_C_EVENT
chỉ hợp lệ cho Windows. Tôi có thể làm gì cho Linux?
FYI: 're.search' với một chuỗi liên tục có thể được thể hiện tốt hơn là' trong khi 'làm' không lineList [-1]: ... ' – nneonneo
Yup, bạn nói đúng. Cảm ơn. –