sigemptyset(&sigs); sigprocmask(SIG_SETMASK, &sigs, NULL);
fork_exec(int wait, char *path, char *arg1, char *arg2, char *arg3){    pid_t child;    int status;    if (!(child = fork())) {	/* child */	if (!wait) {	    /* make sure that pppd is in its own process group */	    setsid();	    setpgid(0, 0);	}	execl(path, path, arg1, arg2, arg3, NULL);	perror(path);	_exit (1);    }    if (wait) {	wait4 (child, &status, 0, NULL);	if (WIFEXITED(status) && (WEXITSTATUS(status) == 0)) {	    return 0;	} else {	    return 1;	}    } else {	return 0;    }}