|
|
@@ -41,11 +41,24 @@ NORMAL = "\x1b[m" |
|
|
|
def pid_running(pid): |
|
|
|
try: |
|
|
|
os.kill(pid, 0) |
|
|
|
return True |
|
|
|
except OSError as err: |
|
|
|
if err.errno == errno.EPERM: |
|
|
|
return True |
|
|
|
return False |
|
|
|
pass # process exists |
|
|
|
else: |
|
|
|
return False |
|
|
|
|
|
|
|
# When running in a container, orphan processes may not get reaped and their |
|
|
|
# PIDs may remain valid. Try to work around the issue. |
|
|
|
try: |
|
|
|
with open(f"/proc/{pid}/status") as status_file: |
|
|
|
if "zombie" in status_file.read(): |
|
|
|
return False |
|
|
|
except Exception: |
|
|
|
# This isn't Linux or `/proc/` is unavailable. |
|
|
|
# Assume that the process is still running. |
|
|
|
pass |
|
|
|
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
def write(message, colour=NORMAL, stream=sys.stdout): |
|
|
|