64 |
} |
} |
65 |
#endif |
#endif |
66 |
|
|
67 |
static void |
static RETSIGTYPE |
68 |
reapchild (int signo) |
reapchild (int signo ARG_UNUSED) |
69 |
{ |
{ |
70 |
int save_errno = errno; |
int save_errno = errno; |
71 |
|
|
|
(void)signo; |
|
72 |
while (waitpid (-1, NULL, WNOHANG) > 0) |
while (waitpid (-1, NULL, WNOHANG) > 0) |
73 |
; |
; |
74 |
errno = save_errno; |
errno = save_errno; |
88 |
syslog (LOG_ERR, "failed to become a daemon"); |
syslog (LOG_ERR, "failed to become a daemon"); |
89 |
return -1; |
return -1; |
90 |
} |
} |
91 |
(void) signal (SIGCHLD, reapchild); |
signal (SIGCHLD, reapchild); |
92 |
|
|
93 |
/* Get port for ftp/tcp. */ |
/* Get port for ftp/tcp. */ |
94 |
sv = getservbyname ("ftp", "tcp"); |
sv = getservbyname ("ftp", "tcp"); |
146 |
fd = accept (ctl_sock, (struct sockaddr *)phis_addr, &addrlen); |
fd = accept (ctl_sock, (struct sockaddr *)phis_addr, &addrlen); |
147 |
if (fork () == 0) /* child */ |
if (fork () == 0) /* child */ |
148 |
{ |
{ |
149 |
(void) dup2 (fd, 0); |
dup2 (fd, 0); |
150 |
(void) dup2 (fd, 1); |
dup2 (fd, 1); |
151 |
close (ctl_sock); |
close (ctl_sock); |
152 |
break; |
break; |
153 |
} |
} |