Get process name, exe path, and cwd via psutil. Returns descriptive string.
(pid: int)
| 59 | |
| 60 | |
| 61 | def _get_process_info(pid: int) -> str: |
| 62 | """Get process name, exe path, and cwd via psutil. Returns descriptive string.""" |
| 63 | try: |
| 64 | import psutil |
| 65 | |
| 66 | proc = psutil.Process(pid) |
| 67 | name = proc.name() |
| 68 | exe = proc.exe() |
| 69 | try: |
| 70 | cwd = proc.cwd() |
| 71 | except (psutil.AccessDenied, OSError): |
| 72 | cwd = "<access denied>" |
| 73 | cmdline = " ".join(proc.cmdline()[:4]) |
| 74 | return f"name={name}, exe={exe}, cwd={cwd}, cmd={cmdline}" |
| 75 | except KeyboardInterrupt as ki: |
| 76 | handle_keyboard_interrupt(ki) |
| 77 | raise |
| 78 | except Exception as e: |
| 79 | return f"<unable to query process: {e}>" |
| 80 | |
| 81 | |
| 82 | def _dump_blocking_stacks(lock_name: str, elapsed: float) -> None: |
no test coverage detected