in init/init.c [272:299]
pid_t launch(char **argv, char **envp) {
int pid = fork();
if (pid != 0) {
die_on(pid < 0, "fork");
return pid;
}
if (argv == NULL)
argv = (char **) default_argv;
if (envp == NULL)
envp = (char **) default_envp;
// Unblock signals before execing.
sigset_t set;
sigfillset(&set);
sigprocmask(SIG_UNBLOCK, &set, 0);
// Create a session and process group.
setsid();
setpgid(0, 0);
// Terminate the arguments and exec.
die_on(putenv(DEFAULT_PATH_ENV), "putenv"); // Specify the PATH used for execvpe
execvpe(argv[0], argv, envp);
die2("execvpe", argv[0]);
}