Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

check process status for non-child process #39

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

masteret
Copy link

@masteret masteret commented May 3, 2017

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

elif err.errno == errno.EPERM:
# Process deny access
raise PtyProcessError('isalive() encountered condition ' +
'where the child process deny access')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe

raise PtyProcessError('isalive() does not have permission to query the process')

elif err.errno == errno.EPERM:
# Process deny access
raise PtyProcessError('isalive() encountered condition ' +
'where the child process deny access')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe

raise PtyProcessError('isalive() does not have permission to query the process')

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants