vfork is on the way out, don't perpetuate binaries w/ sys call
[unix-history] / usr / src / lib / libc / stdlib / system.c
/* @(#)system.c 4.2 (Berkeley) %G% */
#include <signal.h>
system(s)
char *s;
{
int status, pid, w;
register int (*istat)(), (*qstat)();
if ((pid = vfork()) == 0) {
execl("/bin/sh", "sh", "-c", s, 0);
_exit(127);
}
istat = signal(SIGINT, SIG_IGN);
qstat = signal(SIGQUIT, SIG_IGN);
while ((w = wait(&status)) != pid && w != -1)
;
if (w == -1)
status = -1;
signal(SIGINT, istat);
signal(SIGQUIT, qstat);
return(status);
}