#include <limits.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

int main(void) {

char inputFileName[PATH_MAX], outputFileName[PATH_MAX], errorFileName[PATH_MAX];
char command[2048];
int infd, outfd, errfd;
int status;
pid_t pid;

for ( ; ; ) {
	printf("Enter command (null to exit): ");
	gets(command);
	if (command[0] == '\0')
		break;
	printf("Enter input file (null = terminal): ");
	gets(inputFileName);
	printf("Enter output file (null = terminal): ");
	gets(outputFileName);
	printf("Enter error file (null = terminal): ");
	gets(errorFileName);
	if ((pid = fork()) < 0) {
		fprintf(stderr, "fork error");
		exit(1);
	}
	else if (pid == 0) {
		/* child code */
	}
	/* parent code */
	if ((pid = waitpid(pid, &status, 0)) < 0) {
		fprintf(stderr, "waitpid error\n");
		exit(1);
	}
}
return 0;
}
