return to first page linux journal archive
keywordscontents
/* dboot.c - program for inittab to execute and start processes
                for the test station.  Arguments are:
		tty to use for console
		program to run (most likly login)
		[any program args]

example:

c1:respawn:/usr/local/dboot tty1 login -f adams

will startup user 'adams' on console 1

*/

#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>

int main(int ac, char **av)
{
	char	cdev[50];
	char	buf[50];
	int	fd;
	pid_t	pid;

	strcpy(cdev,"/dev/");
	strcat(cdev,av[1]);	/* Console device */
	if (-1 == (fd = open(cdev,O_RDWR))) {
		perror("open");
		exit(0);
	}
	close(0);
	if (-1 == (dup(fd))) {
		perror("dup 0");
		exit(0);
	}
	close(1);
	if (-1 == (dup(fd))) {
		perror("dup 1");
		exit(0);
	}
	close(2);
	if (-1 == (dup(fd))) {
		perror("dup 2");
		exit(0);
	}

	if (-1 == execvp(av[2],&av[2])) {
		perror("execvp");
		exit(0);
	}
}