mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
r14618: add --no-process-group to all server programms
to make the following possible:
timelimit 20000 bin/nmbd -F -S --no-process-group
timelimit 20000 bin/smbd -F -S --no-process-group
this is needed to 'make test' working without losing child processes
metze
(This used to be commit c3a9f30e2a
)
This commit is contained in:
parent
22183b0c74
commit
250c02554e
@ -823,7 +823,7 @@ void smb_msleep(unsigned int t)
|
||||
Become a daemon, discarding the controlling terminal.
|
||||
****************************************************************************/
|
||||
|
||||
void become_daemon(BOOL Fork)
|
||||
void become_daemon(BOOL Fork, BOOL no_process_group)
|
||||
{
|
||||
if (Fork) {
|
||||
if (sys_fork()) {
|
||||
@ -833,9 +833,9 @@ void become_daemon(BOOL Fork)
|
||||
|
||||
/* detach from the terminal */
|
||||
#ifdef HAVE_SETSID
|
||||
setsid();
|
||||
if (!no_process_group) setsid();
|
||||
#elif defined(TIOCNOTTY)
|
||||
{
|
||||
if (!no_process_group) {
|
||||
int i = sys_open("/dev/tty", O_RDWR, 0);
|
||||
if (i != -1) {
|
||||
ioctl(i, (int) TIOCNOTTY, (char *)0);
|
||||
|
@ -658,11 +658,13 @@ static BOOL open_sockets(BOOL isdaemon, int port)
|
||||
static BOOL opt_interactive;
|
||||
poptContext pc;
|
||||
static char *p_lmhosts = dyn_LMHOSTSFILE;
|
||||
static BOOL no_process_group = False;
|
||||
struct poptOption long_options[] = {
|
||||
POPT_AUTOHELP
|
||||
{"daemon", 'D', POPT_ARG_VAL, &is_daemon, True, "Become a daemon(default)" },
|
||||
{"interactive", 'i', POPT_ARG_VAL, &opt_interactive, True, "Run interactive (not a daemon)" },
|
||||
{"foreground", 'F', POPT_ARG_VAL, &Fork, False, "Run daemon in foreground (for daemontools & etc)" },
|
||||
{"no-process-group", 0, POPT_ARG_VAL, &no_process_group, True, "Don't create a new process group" },
|
||||
{"log-stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
|
||||
{"hosts", 'H', POPT_ARG_STRING, &p_lmhosts, 'H', "Load a netbios hosts file"},
|
||||
{"port", 'p', POPT_ARG_INT, &global_nmb_port, NMB_PORT, "Listen on the specified port" },
|
||||
@ -749,7 +751,7 @@ static BOOL open_sockets(BOOL isdaemon, int port)
|
||||
|
||||
if (is_daemon && !opt_interactive) {
|
||||
DEBUG( 2, ( "Becoming a daemon.\n" ) );
|
||||
become_daemon(Fork);
|
||||
become_daemon(Fork, no_process_group);
|
||||
}
|
||||
|
||||
#if HAVE_SETPGID
|
||||
@ -757,7 +759,7 @@ static BOOL open_sockets(BOOL isdaemon, int port)
|
||||
* If we're interactive we want to set our own process group for
|
||||
* signal management.
|
||||
*/
|
||||
if (opt_interactive)
|
||||
if (opt_interactive && !no_process_group)
|
||||
setpgid( (pid_t)0, (pid_t)0 );
|
||||
#endif
|
||||
|
||||
|
@ -912,10 +912,12 @@ int main(int argc, char **argv)
|
||||
pstring logfile;
|
||||
static BOOL Fork = True;
|
||||
static BOOL log_stdout = False;
|
||||
static BOOL no_process_group = False;
|
||||
struct poptOption long_options[] = {
|
||||
POPT_AUTOHELP
|
||||
{ "stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
|
||||
{ "foreground", 'F', POPT_ARG_VAL, &Fork, False, "Daemon in foreground mode" },
|
||||
{ "no-process-group", 0, POPT_ARG_VAL, &no_process_group, True, "Don't create a new process group" },
|
||||
{ "interactive", 'i', POPT_ARG_NONE, NULL, 'i', "Interactive mode" },
|
||||
{ "no-caching", 'n', POPT_ARG_VAL, &opt_nocache, True, "Disable caching" },
|
||||
POPT_COMMON_SAMBA
|
||||
@ -1036,7 +1038,7 @@ int main(int argc, char **argv)
|
||||
CatchSignal(SIGHUP, sighup_handler);
|
||||
|
||||
if (!interactive)
|
||||
become_daemon(Fork);
|
||||
become_daemon(Fork, no_process_group);
|
||||
|
||||
pidfile_create("winbindd");
|
||||
|
||||
@ -1045,7 +1047,7 @@ int main(int argc, char **argv)
|
||||
* If we're interactive we want to set our own process group for
|
||||
* signal management.
|
||||
*/
|
||||
if (interactive)
|
||||
if (interactive && !no_process_group)
|
||||
setpgid( (pid_t)0, (pid_t)0);
|
||||
#endif
|
||||
|
||||
|
@ -715,6 +715,7 @@ void build_options(BOOL screen);
|
||||
static BOOL is_daemon = False;
|
||||
static BOOL interactive = False;
|
||||
static BOOL Fork = True;
|
||||
static BOOL no_process_group = False;
|
||||
static BOOL log_stdout = False;
|
||||
static char *ports = NULL;
|
||||
int opt;
|
||||
@ -725,6 +726,7 @@ void build_options(BOOL screen);
|
||||
{"daemon", 'D', POPT_ARG_VAL, &is_daemon, True, "Become a daemon (default)" },
|
||||
{"interactive", 'i', POPT_ARG_VAL, &interactive, True, "Run interactive (not a daemon)"},
|
||||
{"foreground", 'F', POPT_ARG_VAL, &Fork, False, "Run daemon in foreground (for daemontools & etc)" },
|
||||
{"no-process-group", 0, POPT_ARG_VAL, &no_process_group, True, "Don't create a new process group" },
|
||||
{"log-stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
|
||||
{"build-options", 'b', POPT_ARG_NONE, NULL, 'b', "Print build options" },
|
||||
{"port", 'p', POPT_ARG_STRING, &ports, 0, "Listen on the specified ports"},
|
||||
@ -865,7 +867,7 @@ void build_options(BOOL screen);
|
||||
|
||||
if (is_daemon && !interactive) {
|
||||
DEBUG( 3, ( "Becoming a daemon.\n" ) );
|
||||
become_daemon(Fork);
|
||||
become_daemon(Fork, no_process_group);
|
||||
}
|
||||
|
||||
#if HAVE_SETPGID
|
||||
@ -873,8 +875,9 @@ void build_options(BOOL screen);
|
||||
* If we're interactive we want to set our own process group for
|
||||
* signal management.
|
||||
*/
|
||||
if (interactive)
|
||||
if (interactive && !no_process_group) {
|
||||
setpgid( (pid_t)0, (pid_t)0);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!directory_exist(lp_lockdir(), NULL))
|
||||
|
@ -36,7 +36,7 @@ void start_smbd(void)
|
||||
|
||||
slprintf(binfile, sizeof(pstring) - 1, "%s/smbd", dyn_SBINDIR);
|
||||
|
||||
become_daemon(True);
|
||||
become_daemon(True, False);
|
||||
|
||||
execl(binfile, binfile, "-D", NULL);
|
||||
|
||||
@ -56,7 +56,7 @@ void start_nmbd(void)
|
||||
|
||||
slprintf(binfile, sizeof(pstring) - 1, "%s/nmbd", dyn_SBINDIR);
|
||||
|
||||
become_daemon(True);
|
||||
become_daemon(True, False);
|
||||
|
||||
execl(binfile, binfile, "-D", NULL);
|
||||
|
||||
@ -76,7 +76,7 @@ void start_winbindd(void)
|
||||
|
||||
slprintf(binfile, sizeof(pstring) - 1, "%s/winbindd", dyn_SBINDIR);
|
||||
|
||||
become_daemon(True);
|
||||
become_daemon(True, False);
|
||||
|
||||
execl(binfile, binfile, NULL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user