ambrevar/shell: Rename kill to system-signal, add kill, term.
parent
f55db510e7
commit
ffa4c799f7
|
@ -181,20 +181,29 @@ Return the first non-deleted directory."
|
||||||
(uiop:ensure-all-directories-exist (list (uiop:ensure-directory-pathname path)))
|
(uiop:ensure-all-directories-exist (list (uiop:ensure-directory-pathname path)))
|
||||||
path)
|
path)
|
||||||
|
|
||||||
(defun kill (pids &key (signal 'term) options)
|
(defun system-signal (pid-or-pids &key (signal 'term) options)
|
||||||
"OPTIONS are PKILL options."
|
"OPTIONS are PKILL options."
|
||||||
;; TODO: Is it possible to kill a group without pkill, maybe with osicat?
|
;; TODO: Is it possible to kill a group without pkill, maybe with osicat?
|
||||||
(uiop:run-program
|
(uiop:run-program
|
||||||
(append
|
(append
|
||||||
(list (if options "pkill" "kill") (format nil "-~a" signal))
|
(list (if options "pkill" "kill") (format nil "-~a" signal))
|
||||||
options
|
options
|
||||||
(mapcar #'princ-to-string pids))))
|
(mapcar #'princ-to-string (alex:ensure-list pid-or-pids)))))
|
||||||
|
|
||||||
|
(defun kill (pid-or-pids)
|
||||||
|
"Kill PID-OR-PIDS (with SIGKILL)."
|
||||||
|
(system-signal pid-or-pids :signal 'kill))
|
||||||
|
|
||||||
|
(defun term (pid-or-pids)
|
||||||
|
"Cleanly terminate PID-OR-PIDS."
|
||||||
|
(system-signal pid-or-pids :signal 'term))
|
||||||
|
|
||||||
(defun terminate-process-with-group (process-info)
|
(defun terminate-process-with-group (process-info)
|
||||||
(when (uiop:process-alive-p process-info)
|
(when (uiop:process-alive-p process-info)
|
||||||
(kill (list (format nil "~a" (osicat-posix:getpgid (uiop:process-info-pid process-info))))
|
(system-signal
|
||||||
:signal 'term ;TODO: -KILL instead?
|
(list (format nil "~a" (osicat-posix:getpgid (uiop:process-info-pid process-info))))
|
||||||
:options '("-g"))
|
:signal 'term ;TODO: -KILL instead?
|
||||||
|
:options '("-g"))
|
||||||
(uiop:terminate-process process-info)))
|
(uiop:terminate-process process-info)))
|
||||||
|
|
||||||
(defvar *process-list* '()
|
(defvar *process-list* '()
|
||||||
|
|
Loading…
Reference in New Issue