Я хочу использовать подпроцесс Popen
для вызова strace в Linux.Я также хочу перехватить каждую строку выходных строк, если это возможно, в реальном времени.
Я разработал следующий код для этого, но по какой-то причине я не могу заставить его работать.Я получу вывод только после завершения программы.
from threading import Thread
from queue import Queue, Empty
pid = 1
def enqueue_output(out, queue):
for line in iter(out.readline, b''):
queue.put(line)
out.close()
p = Popen(["strace", "-p", pid], stdout=subprocess.PIPE, bufsize=1)
q = Queue()
t = Thread(target=enqueue_output, args=(p.stdout, q))
t.daemon = True # thread dies with the program
t.start()
try:
line = q.get_nowait()
print("Got it! "+line)
except Empty:
pass