pexpect / ptyprocess

Run a subprocess in a pseudo terminal
https://ptyprocess.readthedocs.io/en/latest/
Other
217 stars 71 forks source link

check process status for non-child process #39

Open masteret opened 7 years ago

masteret commented 7 years ago

solving #37 The original implementation of isalive uses os.waitpid to check if the ptyprocess is alive os.waitpid can only check the process status if that process is a child of the current process

If the pexpect object is passed from process A to process B process B can access the pexpect object but it cannot use it because os.waitpid can't find the ptyprocess under the child list of process B it will throw the no such process error while the process actually exists and is still running

To solve this It can use os.kill to send signal 0 to check if process is alive which achieve the same functionality of os.waitpid but not limit it to child process