Author soumendra
Recipients soumendra
Date 2020-08-06.11:10:22
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1596712223.19.0.204047363548.issue41494@roundup.psfhosted.org>
In-reply-to
Content
This was tested using Python 3.7 after commenting out the sys.audit lines.

https://docs.python.org/3/library/pty.html presents us with an example usage of pty.spawn. This example mimics script(1). However, the script(1) from util-linux has fantastic signal handing that pty.spawn does not directly provide. In fact, Lib/pty.py says "Bugs: No signal handling. Doesn't set slave termios and window size."

xterm(1) on Debian 10 GNU/Linux was used to test the pty.spawn example mentioned above; upon resizing the xterm(1) window, the output of programs such as ls(1) became scattered and hard to visually parse.

This patch does not modify any of the functions that are already present in Lib/pty. Instead, it exposes a new function called "wspawn" [ pty.wspawn ]. This is like pty.spawn + the following differences.

1. Window size is set at the beginning.
2. A SIGWINCH handler is registered. The old handler is saved and restored later.
3. If the above two steps fail, then cleanup is done, and an exception is raised, so that the programmer can catch the exception and use pty.spawn instead.
4. Unlike pty.spawn, this does not depend on OSError to break out of the parent mainloop. Instead, the main loop calls select with an adjustable  timeout, so that waitpid with WNOHANG can be called periodically to check if the spawned child process has undergone an alteration of state.
5. While the return value is same as that of pty.spawn, this accepts an extra optional "timeout" argument for the select call.

The aforementioned pty.spawn example now works well with window resizing if pty.wspawn is used in place of pty.spawn.

Signed-off-by: Soumendra Ganguly <soumendraganguly@gmail.com>
History
Date User Action Args
2020-08-06 11:10:23soumendrasetrecipients: + soumendra
2020-08-06 11:10:23soumendrasetmessageid: <1596712223.19.0.204047363548.issue41494@roundup.psfhosted.org>
2020-08-06 11:10:23soumendralinkissue41494 messages
2020-08-06 11:10:22soumendracreate