From 0424560e5fb00ad5e455af82425143d87a37bcc7 Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Tue, 17 May 2011 09:35:57 -0600 Subject: [PATCH] Add pidofproc to ${sysconfdir}/init.d/functions 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. (From OE-Core rev: 114a11628fb04c30cc96c9fd23db7a7fbc4fd02e) Signed-off-by: Robert Yang Signed-off-by: Richard Purdie --- .../initscripts/initscripts-1.0/functions | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/meta/recipes-core/initscripts/initscripts-1.0/functions b/meta/recipes-core/initscripts/initscripts-1.0/functions index ac99e112c7..c1eac3efda 100644 --- a/meta/recipes-core/initscripts/initscripts-1.0/functions +++ b/meta/recipes-core/initscripts/initscripts-1.0/functions @@ -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 }