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