Skip to content

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 a SIGTERM signal to all processes in p. If some proccesses do not terminate within grace milliseconds after the SIGTERM signal, ps_kill() kills them by sending SIGKILL signals.

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.

Examples

px <- processx::process$new("sleep", "10")
p <- ps_handle(px$get_pid())
p
#> <ps::ps_handle> PID=7236, NAME=sleep, AT=2024-09-13 08:10:52.31
ps_kill(p)
#> [1] "terminated"
p
#> <ps::ps_handle> PID=7236, NAME=???, AT=2024-09-13 08:10:52.31
ps_is_running(p)
#> [1] FALSE
px$get_exit_status()
#> [1] -15