4.3BSD-UWisc/src/lib/libc/gen/system.c
#if defined(LIBC_RCS) && !defined(lint)
static char rcs_id[] =
"$Header: system.c,v 1.3 86/09/08 14:45:35 tadl Exp $";
#endif
/*
* RCS info
* $Locker: $
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)system.c 5.2 (Berkeley) 3/9/86";
#endif LIBC_SCCS and not lint
#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);
}