summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/common-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs/src/common-utils.c')
-rw-r--r--libglusterfs/src/common-utils.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c
index 2acd83f36cf..6ea4fd14374 100644
--- a/libglusterfs/src/common-utils.c
+++ b/libglusterfs/src/common-utils.c
@@ -3633,6 +3633,24 @@ gf_skip_header_section (int fd, int header_len)
return ret;
}
+/* Below function is use to check at runtime if pid is running */
+
+gf_boolean_t
+gf_is_pid_running (int pid)
+{
+ char fname[32] = {0,};
+
+ snprintf(fname, sizeof(fname), "/proc/%d/cmdline", pid);
+
+ if (sys_access (fname , R_OK) != 0) {
+ return _gf_false;
+ }
+
+ return _gf_true;
+
+}
+
+
gf_boolean_t
gf_is_service_running (char *pidfile, int *pid)
{
@@ -3661,15 +3679,7 @@ gf_is_service_running (char *pidfile, int *pid)
*pid = -1;
}
- if (!*pid) {
- /*
- * PID 0 means we've started the process, but it hasn't gotten
- * far enough to put in a real PID yet. More details are in
- * glusterd_brick_start.
- */
- running = _gf_true;
- }
-
+ running = gf_is_pid_running (*pid);
out:
if (file)
fclose (file);