Kill the process with SIGKILL preemptively checking whether PID has
been reused. On Windows it uses TerminateProcess().
Usage
ps_kill(p = ps_handle(), grace = 200)Arguments
- p
Process handle, or a list of process handles.
- grace
Grace period, in milliseconds, used on Unix. If it is not zero, then
ps_kill()first sends aSIGTERMsignal to all processes inp. If some proccesses do not terminate withingracemilliseconds after theSIGTERMsignal,ps_kill()kills them by sendingSIGKILLsignals.
Value
Character vector, with one element for each process handle in
p. If the process was already dead before ps_kill() tried to kill
it, the corresponding return value is "dead". If ps_kill() just
killed it, it is "killed".
Details
Note that since ps version 1.8, ps_kill() does not error if the
p process (or some processes if p is a list) are already terminated.
See also
Other process handle functions:
ps_children(),
ps_cmdline(),
ps_connections(),
ps_cpu_times(),
ps_create_time(),
ps_cwd(),
ps_descent(),
ps_environ(),
ps_exe(),
ps_handle(),
ps_interrupt(),
ps_is_running(),
ps_memory_info(),
ps_name(),
ps_num_fds(),
ps_num_threads(),
ps_open_files(),
ps_pid(),
ps_ppid(),
ps_resume(),
ps_send_signal(),
ps_shared_libs(),
ps_status(),
ps_suspend(),
ps_terminal(),
ps_terminate(),
ps_uids(),
ps_username()
Examples
px <- processx::process$new("sleep", "10")
p <- ps_handle(px$get_pid())
p
#> <ps::ps_handle> PID=9239, NAME=sleep, AT=2025-10-21 07:42:04.54
ps_kill(p)
#> [1] "terminated"
p
#> <ps::ps_handle> PID=9239, NAME=???, AT=2025-10-21 07:42:04.54
ps_is_running(p)
#> [1] FALSE
px$get_exit_status()
#> [1] -15