-
-
Notifications
You must be signed in to change notification settings - Fork 32.1k
os.kill on Windows should accept zero as signal #58685
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
Comments
Starting from 3.2 Python supports os.kill for Windows. Posix allows to pass zero signal to check pid for existing. |
-1 0 has no special meaning on Windows so I'd rather not add another special case for posix emulation. Additionally, 0 unfortunately already means two things as it is: signal.CTRL_C_EVENT and the int 0. |
Hmm. I would think it would be a good idea to have os.kill do posix emulation where that makes sense, it makes cross-platform usage easier. That's what 'kill' with no signal does, right (kills the process, just like the posix default)? The posix spec says "If sig is 0 (the null signal), error checking is performed but no signal is actually sent. The null signal can be used to check the validity of pid." So *signal* zero doesn't have any special meaning on posix, either, but it does have a special meaning to the kill command. It seems like it would be nice to add support for that to the windows version, but I'm a little confused. First you say that signal 0 has no special meaning, and then you say that it does (signal.CTRL_C_EVENT). Which is it? |
I meant that in the underlying, such as in the TerminateProcess API, 0 doesn't mean anything special. As is being debated over on bpo-14484 we currently take all integers to be passed to TerminateProcess (the int becomes the killed proc's return code), and two signals to pass to GenerateConsoleCtrlEvent (which is more like posix os.kill). |
There are no |
I agree, it's not a good idea to support os.kill(pid, 0) on Windows. I reject the issue. See also the issue bpo-14484. |
The LogMonitor did not work correctly on windows. It had two problems that this PR solves: the code to add nice worker_pid names depended on posix path separators. This also caused the tests to fail on windows so they were skipped. Fixing this problem allowed enabling the tests the way to check "liveness" of a PID used os.kill which would kill the process on windows, see os.kill on Windows should accept zero as signal python/cpython#58685 and missing return in win32_kill? python/cpython#58689. Since psutil is already installed, use it instead In addition this PR has cleanups: Avoid a warning when compiling regular expressions Check for exceptions when using gputil, which raises on windows if drivers are installed but no graphics card is found (for instance, if the user disabled/removed the GPU).
The LogMonitor did not work correctly on windows. It had two problems that this PR solves: the code to add nice worker_pid names depended on posix path separators. This also caused the tests to fail on windows so they were skipped. Fixing this problem allowed enabling the tests the way to check "liveness" of a PID used os.kill which would kill the process on windows, see os.kill on Windows should accept zero as signal python/cpython#58685 and missing return in win32_kill? python/cpython#58689. Since psutil is already installed, use it instead In addition this PR has cleanups: Avoid a warning when compiling regular expressions Check for exceptions when using gputil, which raises on windows if drivers are installed but no graphics card is found (for instance, if the user disabled/removed the GPU). Signed-off-by: Andrea Pisoni <andreapiso@gmail.com>
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: