/* @(#)system.c 4.1 (Berkeley) 12/21/80 */ #include <signal.h> system(s) char *s; { int status, pid, w; register int (*istat)(), (*qstat)(); if((pid = fork()) == 0){ execl("/bin/sh", "sh", "-c", s, 0); _exit(127); } else if(pid < 0) return(pid); 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); }