Patchwork [08/15] Add pidofproc to ${sysconfdir}/init.d/functions

login
register
mail settings
Submitter Saul Wold
Date May 18, 2011, 8:17 a.m.
Message ID <5761fd4e75e39be9e610c02eff1a86e6b8b3559c.1305702436.git.sgw@linux.intel.com>
Download mbox | patch
Permalink /patch/4321/
State New, archived
Headers show

Comments

Saul Wold - May 18, 2011, 8:17 a.m.
From: Robert Yang <liezhi.yang@windriver.com>

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>
---
 .../initscripts/initscripts-1.0/functions          |   32 ++++++++++++++++++-
 1 files changed, 30 insertions(+), 2 deletions(-)

Patch

diff --git a/meta/recipes-core/initscripts/initscripts-1.0/functions b/meta/recipes-core/initscripts/initscripts-1.0/functions
index ac99e11..c1eac3e 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
 }