From 36128ad8b03f5c9723dda1fb98b8e98e0a872a99 Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Mon, 16 Apr 2012 14:00:04 +0200 Subject: [PATCH] Use DEFGENERIC for PROCESS-STATUS, PROCESS-STATUS and PROCESS-STATUS --- src/os/create-process-unix.lisp | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/os/create-process-unix.lisp b/src/os/create-process-unix.lisp index 79c4434..44f7542 100644 --- a/src/os/create-process-unix.lisp +++ b/src/os/create-process-unix.lisp @@ -73,25 +73,28 @@ (values (isys:wtermsig* status) (isys:wcoredump status))))) -(defmethod process-status ((process process) &key wait) - (if (integerp (slot-value process 'status)) - (exit-status (slot-value process 'status)) - (multiple-value-bind (pid status) - (isys:waitpid (process-pid process) - (if wait 0 isys:wnohang)) - (cond - ((zerop pid) - :running) - (t - (setf (slot-value process 'status) status) - (exit-status status)))))) +(defgeneric process-status (process &key wait) + (:method ((process process) &key wait) + (if (integerp (slot-value process 'status)) + (exit-status (slot-value process 'status)) + (multiple-value-bind (pid status) + (isys:waitpid (process-pid process) + (if wait 0 isys:wnohang)) + (cond + ((zerop pid) + :running) + (t + (setf (slot-value process 'status) status) + (exit-status status))))))) -(defmethod process-activep ((process process)) - (eql :running (process-status process))) +(defgeneric process-activep (process) + (:method ((process process)) + (eql :running (process-status process)))) -(defmethod process-kill ((process process) &optional (signum :sigterm)) - (isys:kill (process-pid process) signum) - process) +(defgeneric process-kill (process &optional signum) + (:method ((process process) &optional (signum :sigterm)) + (isys:kill (process-pid process) signum) + process)) (defmacro with-lfp-spawn-arguments ((attributes file-actions pid) &body body) -- 2.11.4.GIT