2 * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/runprog.c,v 1.7 2005/09/15 18:26:52 rtoy Rel $
4 * Support for run-program.
17 spawn(char *program, char *argv[], char *envp[], char *pty_name,
18 int stdin, int stdout, int stderr)
28 /* Put us in our own process group. */
31 /* Unblock all signals. */
33 sigprocmask(SIG_SETMASK, &set, NULL);
35 /* If we are supposed to be part of some other pty, go for it. */
38 fd = open("/dev/tty", O_RDWR, 0);
40 ioctl(fd, TIOCNOTTY, 0);
45 fd = open(pty_name, O_RDWR, 0);
52 /* Set up stdin, stdout, and stderr. */
60 /* Close all other fds. */
61 for (fd = sysconf(_SC_OPEN_MAX) - 1; fd >= 3; fd--)
64 /* Exec the program. */
65 execve(program, argv, envp);
67 /* It didn't work, so try /bin/sh. */
70 execve("/bin/sh", argv - 1, envp);
72 /* The exec didn't work, flame out. */