From 1955a2d57d6d6ff3d4aa6dcdbc890d9c44417f7f Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 22 Mar 2013 09:05:06 -0400 Subject: Write pid file at startup. --- proxy/src/gp_common.h | 1 + proxy/src/gp_init.c | 33 +++++++++++++++++++++++++++++++++ proxy/src/gp_proxy.h | 1 + proxy/src/gssproxy.c | 2 ++ 4 files changed, 37 insertions(+) (limited to 'proxy/src') diff --git a/proxy/src/gp_common.h b/proxy/src/gp_common.h index 0de698c..ad68e55 100644 --- a/proxy/src/gp_common.h +++ b/proxy/src/gp_common.h @@ -26,6 +26,7 @@ #ifndef _GP_COMMON_H_ #define _GP_COMMON_H_ +#include "config.h" #include "gp_debug.h" #include "gp_log.h" diff --git a/proxy/src/gp_init.c b/proxy/src/gp_init.c index 8d0ebd8..c364edc 100644 --- a/proxy/src/gp_init.c +++ b/proxy/src/gp_init.c @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include "gp_proxy.h" void init_server(bool daemonize) @@ -176,3 +178,34 @@ void init_proc_nfsd(struct gp_config *cfg) return; } } + +void write_pid(void) +{ + pid_t pid; + FILE *f; + int ret; + + pid = getpid(); + + f = fopen(GP_PID_FILE, "w"); + if (!f) { + ret = errno; + GPDEBUG("Failed to open %s: %d (%s)\n", + GP_PID_FILE, ret, strerror(ret)); + return; + } + + ret = fprintf(f, "%d\n", pid); + if (ret < 0) { + GPDEBUG("Failed to write pid to %s\n", GP_PID_FILE); + fclose(f); + return; + } + + ret = fclose(f); + if (ret != 0) { + GPDEBUG("Failed to close %s: %d (%s)\n" + GP_PID_FILE, ret, strerror(ret)); + return; + } +} diff --git a/proxy/src/gp_proxy.h b/proxy/src/gp_proxy.h index beddf61..25f8a43 100644 --- a/proxy/src/gp_proxy.h +++ b/proxy/src/gp_proxy.h @@ -88,6 +88,7 @@ void init_server(bool daemonize); void fini_server(void); verto_ctx *init_event_loop(void); void init_proc_nfsd(struct gp_config *cfg); +void write_pid(void); /* from gp_socket.c */ int init_unix_socket(const char *file_name); diff --git a/proxy/src/gssproxy.c b/proxy/src/gssproxy.c index f1f0d13..4dd0094 100644 --- a/proxy/src/gssproxy.c +++ b/proxy/src/gssproxy.c @@ -106,6 +106,8 @@ int main(int argc, const char *argv[]) /* special call to tell the Linux kernel gss-proxy is available */ init_proc_nfsd(gpctx->config); + write_pid(); + vctx = init_event_loop(); if (!vctx) { return 1; -- cgit