|
|
@@ -361,6 +361,27 @@ setsid(void)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+static void
|
|
|
+write_pidfile(const char *filename, pid_t pid)
|
|
|
+{
|
|
|
+ FILE *fp;
|
|
|
+ int fd;
|
|
|
+
|
|
|
+ fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | O_NOFOLLOW, 0666);
|
|
|
+ if (fd < 0)
|
|
|
+ fp = NULL;
|
|
|
+ else
|
|
|
+ fp = fdopen(fd, "w");
|
|
|
+
|
|
|
+ if (fp == NULL)
|
|
|
+ fatal("unable to open pidfile '%s' for writing", filename);
|
|
|
+
|
|
|
+ fprintf(fp, "%d\n", pid);
|
|
|
+
|
|
|
+ if (fclose(fp))
|
|
|
+ fatal("unable to close pidfile '%s'", filename);
|
|
|
+}
|
|
|
+
|
|
|
static void
|
|
|
daemonize(void)
|
|
|
{
|
|
|
@@ -389,27 +410,6 @@ daemonize(void)
|
|
|
printf("done.\n");
|
|
|
}
|
|
|
|
|
|
-static void
|
|
|
-write_pidfile(const char *filename, pid_t pid)
|
|
|
-{
|
|
|
- FILE *fp;
|
|
|
- int fd;
|
|
|
-
|
|
|
- fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | O_NOFOLLOW, 0666);
|
|
|
- if (fd < 0)
|
|
|
- fp = NULL;
|
|
|
- else
|
|
|
- fp = fdopen(fd, "w");
|
|
|
-
|
|
|
- if (fp == NULL)
|
|
|
- fatal("unable to open pidfile '%s' for writing", filename);
|
|
|
-
|
|
|
- fprintf(fp, "%d\n", pid);
|
|
|
-
|
|
|
- if (fclose(fp))
|
|
|
- fatal("unable to close pidfile '%s'", filename);
|
|
|
-}
|
|
|
-
|
|
|
static void
|
|
|
pid_list_push(struct pid_list **list, pid_t pid)
|
|
|
{
|