All pastes #203984 Raw Edit

illvm

public c v1 · immutable
#203984 ·published 2006-10-15 15:45 UTC
rendered paste body
#include <stdio.h>#include <sys/wait.h>#include <unistd.h>#include <ctype.h>#include <string.h>#include <stdlib.h>int main(int argc, char **argv){   int pid;   if(!(argc >= 4 && (strcmp(argv[1], "stdout") == 0 ||       strcmp(argv[1], "stdin") == 0 ||       strcmp(argv[1], "stderr") == 0))) {      printf("Usage:\n");      printf("\t redir {stdout | stdin | stderr} file program [args]\n");      return -1;   }   int i;   char* forkArgs[100];   for(i = 3; i < argc; i++){      forkArgs[(i - 3)] = argv[i];   }   pid = fork();   if(pid == 0){      if(strcmp(argv[1], "stdout") == 0){         freopen(argv[2], "w+", stdout);      }else if(strcmp(argv[1], "stdin") == 0){         freopen(argv[2], "r", stdin);      }else{         freopen(argv[2], "w+", stderr);      }      execvp(argv[3], forkArgs);      _exit(0);   }else if(pid > 0){      wait(0);   }else{      printf("couldn't fork a child");      return 1;   }   return 0;}