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 aSIGTERM
signal to all processes inp
. If some proccesses do not terminate withingrace
milliseconds after theSIGTERM
signal,ps_kill()
kills them by sendingSIGKILL
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.
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=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