Martin Panter <vadmium...@gmail.com> added the comment: If it helps, here is a basic test case I wrote for “pty.spawn”. I hope that it exposes the problem on Free BSD, but I have only tested it on Linux.
parent = r'''\ import pty, sys pty.spawn((sys.executable, "-c", sys.argv[1])) ''' child = r'''\ import sys # Read input first of all to minimize output buffering input = sys.stdin.readline() print("isatty: {}, {}, {}".format( sys.stdin.isatty(), sys.stdout.isatty(), sys.stderr.isatty())) print("input: " + repr(input)) sys.stdout.write("stdout data\n") sys.stderr.write("stderr data\n") ''' args = (sys.executable, "-c", parent, child) parent = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE) try: parent.stdin.write(b"stdin data\n") parent.stdin.flush() # Leave input open. When the child closes the slave terminal on # Free BSD, “spawn” used to keep waiting for input (BPO 26228). output = parent.stdout.read() finally: parent.stdout.close() parent.stdin.close() parent.wait() self.assertEqual(0, parent.returncode, repr(output)) self.assertIn(b"isatty: True, True, True", output) self.assertIn(br"input: 'stdin data\n'", output) self.assertIn(b"stdout data", output) self.assertIn(b"stderr data", output) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue26228> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com