1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
--- a/inetd.c
+++ b/inetd.c
@@ -287,6 +287,7 @@ void reap(int, short, void *);
void retry(int, short, void *);
void die(int, short, void *);
+void logpid(void);
void spawn(int, short, void *);
void gettcp(int, short, void *);
int setconfig(void);
@@ -409,6 +410,7 @@ main(int argc, char *argv[], char *envp[
}
openlog("inetd", LOG_PID | LOG_NOWAIT, LOG_DAEMON);
+ logpid();
if (getrlimit(RLIMIT_NOFILE, &rlim_nofile) == -1) {
syslog(LOG_ERR, "getrlimit: %m");
@@ -876,6 +878,7 @@ die(int sig, short events, void *arg)
}
(void)close(sep->se_fd);
}
+ (void)unlink("/run/inetd.pid");
exit(0);
}
@@ -1576,6 +1579,17 @@ inetd_setproctitle(char *a, int s)
setproctitle("-%s", a);
}
+void
+logpid(void)
+{
+ FILE *fp;
+
+ if ((fp = fopen("/run/inetd.pid", "w")) != NULL) {
+ fprintf(fp, "%ld\n", (long)getpid());
+ (void)fclose(fp);
+ }
+}
+
int
bump_nofile(void)
{
|