Сбой чтения без блока на стандартный вывод для Python - PullRequest
0 голосов
/ 10 июля 2019

Я хочу иметь возможность использовать pdb в качестве подпроцесса, ввести оператор отладки и получить его вывод. и я обнаружил, что fcntl может помочь, но, к моему удивлению, он работает для других программ, таких как gdb, но когда cmd имеет значение "python" или ["python", "-m", "pdb", "computer.py" ], Это не будет работать.

Я заменяю cmd на 'gdb' или другую программу, все это работает с fcntl. но только сбой, когда cmd связан с 'python'.

Popen (['python', '-m', 'pdb', 'computer.py'], stdin = PIPE, stdout = PIPE, shell = False)

flags = fcntl (p.stdout.fileno (), F_GETFL) fcntl (p.stdout.fileno (), F_SETFL, flags | O_NONBLOCK)

ожидаемый результат: я могу получить стандартный вывод.

1 Ответ

0 голосов
/ 10 июля 2019

плюс аргумент "-u". -u: небуферизованные двоичные stdout и stderr; также PYTHONUNBUFFERED = x см. справочную страницу для получения подробной информации о внутренней буферизации, относящейся к '-u'

...