Patches item #783050, was opened at 2003-08-04 16:02 Message generated for change (Comment added) made by akuchling You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=783050&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. >Category: Library (Lib) Group: None >Status: Closed >Resolution: Accepted Priority: 5 Private: No Submitted By: Patrick Lynch (rvdp) >Assigned to: A.M. Kuchling (akuchling) Summary: pty.fork() compatibility code wrong? Initial Comment: pty.fork() provides compatibility code for environments lacking os.forkpty() This code is incorrect compared to the forkpty code in glibc, and will cause reading of the returned master_fd to hang indefinetly when the child process is finished. I am running on linux, Python 2.2. I am using the compatibility code where I need more control ( grabing stdout seperate to stderr, which is on the pty). To have it read like forkpty in glibc: <snip> master_fd, slave_fd = openpty() pid = os.fork() if pid == CHILD: # Establish a new session. os.setsid() os.close(master_fd) # Slave becomes stdin/stdout/stderr of child. os.dup2(slave_fd, STDIN_FILENO) os.dup2(slave_fd, STDOUT_FILENO) os.dup2(slave_fd, STDERR_FILENO) if (slave_fd > STDERR_FILENO): os.close (slave_fd) else:#PARENT os.close( slave_fd) # Parent and child process. return pid, master_fd Reading the master_fd when the child is finished will now raise an IO error, same as the native forkpty(). I guess the story may be different on non linux boxen Patrick. ---------------------------------------------------------------------- >Comment By: A.M. Kuchling (akuchling) Date: 2006-12-22 13:42 Message: Logged In: YES user_id=11375 Originator: NO Applied to the trunk in rev. 53146. Thanks for pointing out this bug! ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=783050&group_id=5470 _______________________________________________ Patches mailing list Patches@python.org http://mail.python.org/mailman/listinfo/patches