【发布时间】:2019-11-19 18:09:49
【问题描述】:
我希望能够将 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)
标志 = fcntl(p.stdout.fileno(), F_GETFL) fcntl(p.stdout.fileno(), F_SETFL, flags | O_NONBLOCK)
预期的结果是我可以正确获取标准输出。
【问题讨论】:
标签: python subprocess nonblocking