pmgt_ProcessSpawnVEB(spath, sargv, senvp, sdatap, sdatalen)
#define spawnprocve(spath, sargv, senvp, estatus) \
pmgt_ProcessSpawnVEB(spath, sargv, senvp, NULL, 0)
+#define spawnprocve_sig(spath, sargv, senvp, estatus, mask) \
+ pmgt_ProcessSpawnVEB(spath, sargv, senvp, NULL, 0)
#define spawnprocv(spath, sargv, estatus) \
pmgt_ProcessSpawnVEB(spath, sargv, NULL, NULL, 0)
/* ----------------- Processes ---------------- */
#define spawnprocve(spath, sargv, senvp, estatus) \
- pmgt_ProcessSpawnVE(spath, sargv, senvp, estatus)
+ pmgt_ProcessSpawnVE(spath, sargv, senvp, estatus, NULL)
+#define spawnprocve_sig(spath, sargv, senvp, estatus, mask) \
+ pmgt_ProcessSpawnVE(spath, sargv, senvp, estatus, mask)
#define spawnprocv(spath, sargv, estatus) \
- pmgt_ProcessSpawnVE(spath, sargv, NULL, estatus)
+ pmgt_ProcessSpawnVE(spath, sargv, NULL, estatus, NULL)
extern pid_t pmgt_ProcessSpawnVE(const char *spath, char **sargv,
- char **senvp, int estatus);
+ char **senvp, int estatus, sigset_t *mask);
#endif /* AFS_NT40_ENV */
* Open files are not inherited, except stdin, stdout, and stderr.
* If child fails to exec() spath, its exit code is estatus.
*
+ * If provided, a signal mask will be set for the spawned process.
+ *
* ASSUMPTIONS: sargv[0] is the same as spath (or its last component).
*/
pid_t
pmgt_ProcessSpawnVE(const char *spath, char *sargv[], char *senvp[],
- int estatus)
+ int estatus, sigset_t *mask)
{
pid_t pid;
close(i);
}
+ sigprocmask(SIG_SETMASK, mask, NULL);
+
if (senvp) {
execve(spath, sargv, senvp);
} else {