#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); }