From ce36dd0994ffa833ff0ce18e57a8776ff1103d8d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 20 Oct 2003 21:53:46 +0000 Subject: commit release 0.3 git-svn-id: file:///home/lennart/svn/public/libdaemon/trunk@41 153bfa13-eec0-0310-be40-b0cb6a0e1b4b --- src/dpid.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/dpid.c') diff --git a/src/dpid.c b/src/dpid.c index 6d91cae..6731573 100644 --- a/src/dpid.c +++ b/src/dpid.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "dpid.h" #include "dlog.h" @@ -89,6 +90,36 @@ int daemon_pid_file_kill(int s) { return 0; } +int daemon_pid_file_kill_wait(int s, int m) { + pid_t pid; + time_t t; + + if ((pid = daemon_pid_file_is_running()) < 0) + return -1; + + if (kill(pid, s) < 0) + return -1; + + t = time(NULL) + m; + + for (;;) { + int r; + struct timeval tv = { 0, 100000 }; + + if (time(NULL) > t) + return -1; + + if ((r = kill(pid, 0)) < 0 && errno != ESRCH) + return -1; + + if (r) + return 0; + + if (select(0, NULL, NULL, NULL, &tv) < 0) + return -1; + } +} + int daemon_pid_file_create(void) { const char *fn; FILE *f; -- cgit