mirror of
https://github.com/samba-team/samba.git
synced 2025-02-26 21:57:41 +03:00
s4/smbd: set the process group.
Set the process group in the samba daemon, the --no-process-group option allows this to be disabled. The no-process-group option needs to be disabled in self test. Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> Autobuild-User(master): Ralph Böhme <slow@samba.org> Autobuild-Date(master): Mon Sep 18 04:39:50 CEST 2017 on sn-devel-144
This commit is contained in:
parent
c8e325c765
commit
af38d73b06
@ -158,7 +158,7 @@ sub check_or_start($$$)
|
||||
close($env_vars->{STDIN_PIPE});
|
||||
open STDIN, ">&", $STDIN_READER or die "can't dup STDIN_READER to STDIN: $!";
|
||||
|
||||
exec(@preargs, Samba::bindir_path($self, "samba"), "-M", $process_model, "-i", "--maximum-runtime=$self->{server_maxtime}", $env_vars->{CONFIGURATION}, @optargs) or die("Unable to start samba: $!");
|
||||
exec(@preargs, Samba::bindir_path($self, "samba"), "-M", $process_model, "-i", "--no-process-group", "--maximum-runtime=$self->{server_maxtime}", $env_vars->{CONFIGURATION}, @optargs) or die("Unable to start samba: $!");
|
||||
}
|
||||
$env_vars->{SAMBA_PID} = $pid;
|
||||
print "DONE ($pid)\n";
|
||||
|
@ -341,6 +341,7 @@ static int binary_smbd_main(const char *binary_name,
|
||||
{
|
||||
bool opt_daemon = false;
|
||||
bool opt_interactive = false;
|
||||
bool opt_no_process_group = false;
|
||||
int opt;
|
||||
poptContext pc;
|
||||
#define _MODULE_PROTO(init) extern NTSTATUS init(TALLOC_CTX *);
|
||||
@ -356,7 +357,8 @@ static int binary_smbd_main(const char *binary_name,
|
||||
OPT_DAEMON = 1000,
|
||||
OPT_INTERACTIVE,
|
||||
OPT_PROCESS_MODEL,
|
||||
OPT_SHOW_BUILD
|
||||
OPT_SHOW_BUILD,
|
||||
OPT_NO_PROCESS_GROUP,
|
||||
};
|
||||
struct poptOption long_options[] = {
|
||||
POPT_AUTOHELP
|
||||
@ -371,6 +373,8 @@ static int binary_smbd_main(const char *binary_name,
|
||||
"till autotermination", "seconds"},
|
||||
{"show-build", 'b', POPT_ARG_NONE, NULL, OPT_SHOW_BUILD,
|
||||
"show build info", NULL },
|
||||
{"no-process-group", '\0', POPT_ARG_NONE, NULL,
|
||||
OPT_NO_PROCESS_GROUP, "Don't create a new process group" },
|
||||
POPT_COMMON_SAMBA
|
||||
POPT_COMMON_VERSION
|
||||
{ NULL }
|
||||
@ -393,6 +397,9 @@ static int binary_smbd_main(const char *binary_name,
|
||||
case OPT_SHOW_BUILD:
|
||||
show_build();
|
||||
break;
|
||||
case OPT_NO_PROCESS_GROUP:
|
||||
opt_no_process_group = true;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "\nInvalid option %s: %s\n\n",
|
||||
poptBadOption(pc, 0), poptStrerror(opt));
|
||||
@ -508,6 +515,15 @@ static int binary_smbd_main(const char *binary_name,
|
||||
stdin_event_flags = 0;
|
||||
}
|
||||
|
||||
#if HAVE_SETPGID
|
||||
/*
|
||||
* If we're interactive we want to set our own process group for
|
||||
* signal management, unless --no-process-group specified.
|
||||
*/
|
||||
if (opt_interactive && !opt_no_process_group)
|
||||
setpgid((pid_t)0, (pid_t)0);
|
||||
#endif
|
||||
|
||||
/* catch EOF on stdin */
|
||||
#ifdef SIGTTIN
|
||||
signal(SIGTTIN, SIG_IGN);
|
||||
|
Loading…
x
Reference in New Issue
Block a user