char *args = NULL;
start_subsystem(struct crm_subsystem_s*	the_subsystem){	pid_t       pid;	struct stat buf;	int         s_res;	unsigned int	j;	struct rlimit	oflimits;	const char 	*devnull = "/dev/null";		crm_debug("Starting sub-system \"%s\"", the_subsystem->name);	set_bit_inplace(fsa_input_register, the_subsystem->flag_required);	if (the_subsystem->pid > 0) {		crm_warn("Client %s already running as pid %d",			the_subsystem->name, (int) the_subsystem->pid);		/* starting a started X is not an error */		return TRUE;	}	/*	 * We want to ensure that the exec will succeed before	 * we bother forking.	 */	if (access(the_subsystem->path, F_OK|X_OK) != 0) {		cl_perror("Cannot (access) exec %s", the_subsystem->path);		return FALSE;	}	s_res = stat(the_subsystem->command, &buf);	if(s_res != 0) {		cl_perror("Cannot (stat) exec %s", the_subsystem->command);		return FALSE;	}		/* We need to fork so we can make child procs not real time */	switch(pid=fork()) {		case -1:			crm_err("Cannot fork.");			return FALSE;		default:	/* Parent */			the_subsystem->pid = pid;			return TRUE;		case 0:		/* Child */			break;	}	crm_info("Executing \"%s %s\" (pid %d)",		 the_subsystem->command, the_subsystem->args, (int) getpid());	/* A precautionary measure */	getrlimit(RLIMIT_NOFILE, &oflimits);	for (j=0; j < oflimits.rlim_cur; ++j) {		close(j);	}		(void)open(devnull, O_RDONLY);	/* Stdin:  fd 0 */	(void)open(devnull, O_WRONLY);	/* Stdout: fd 1 */	(void)open(devnull, O_WRONLY);	/* Stderr: fd 2 */		{		char* const start_args[] = {			crm_strdup(the_subsystem->args),			NULL		};				(void)execv(the_subsystem->command, start_args);	}		/* Should not happen */	cl_perror("FATAL: Cannot exec %s %s",		  the_subsystem->command, the_subsystem->args);	exit(100); /* Suppress respawning */	return TRUE; /* never reached */}