]> code.ossystems Code Review - openembedded-core.git/commitdiff
Add pidofproc to ${sysconfdir}/init.d/functions
authorRobert Yang <liezhi.yang@windriver.com>
Tue, 17 May 2011 15:35:57 +0000 (09:35 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 18 May 2011 13:22:53 +0000 (14:22 +0100)
Add pidofproc to ${sysconfdir}/init.d/functions, this is used for
getting the pid of the process. It uses pidof to implement currently, it
may also use the pidfile or ps to implement in the future.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
meta/recipes-core/initscripts/initscripts-1.0/functions

index ac99e112c73b889c0f5f651da8d83a6d275bdd1d..c1eac3efda19dd4b69318feeb59784fc2c82251d 100644 (file)
@@ -3,6 +3,35 @@
 # functions     This file contains functions to be used by most or all
 #               shell scripts in the /etc/init.d directory.
 #
+# NOTE: The pidofproc () doesn't support the process which is a script unless
+#       the pidof supports "-x" option. If you want to use it for such a
+#       process:
+#       1) If there is no "pidof -x", replace the "pidof $1" with another
+#          command like(for core-image-minimal):
+#            ps | awk '/'"$1"'/ {print $1}'
+#       Or
+#       2) If there is "pidof -x", replace "pidof" with "pidof -x".
+#
+# pidofproc - print the pid of a process
+# $1: the name of the process
+pidofproc () {
+
+       # pidof output null when no program is running, so no "2>/dev/null".
+       pid=`pidof $1`
+       case $? in
+       0)
+               echo $pid
+               return 0
+               ;;
+       127)
+               echo "ERROR: command pidof not found" >&2
+               exit 127
+               ;;
+       *)
+               return $?
+               ;;
+       esac
+}
 
 machine_id() { # return the machine ID
        awk 'BEGIN { FS=": " } /Hardware/ \
@@ -10,6 +39,5 @@ machine_id() { # return the machine ID
 }
 
 killproc() { # kill the named process(es)
-       pid=`/bin/pidof $1`
-       [ "$pid" != "" ] && kill $pid
+       pid=`pidofproc $1` && kill $pid
 }