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
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