|
|
1.1 ! root 1: /* @(#)system.c 4.1 (Berkeley) 12/21/80 */ ! 2: #include <signal.h> ! 3: ! 4: system(s) ! 5: char *s; ! 6: { ! 7: int status, pid, w; ! 8: register int (*istat)(), (*qstat)(); ! 9: ! 10: if ((pid = vfork()) == 0) { ! 11: execl("/bin/sh", "sh", "-c", s, 0); ! 12: _exit(127); ! 13: } ! 14: istat = signal(SIGINT, SIG_IGN); ! 15: qstat = signal(SIGQUIT, SIG_IGN); ! 16: while ((w = wait(&status)) != pid && w != -1) ! 17: ; ! 18: if (w == -1) ! 19: status = -1; ! 20: signal(SIGINT, istat); ! 21: signal(SIGQUIT, qstat); ! 22: return(status); ! 23: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.