#include #include #include #include int main(int argc, char *argv[]) { pid_t f = fork(); if (f < 0) { perror("fork"); return 1; } if (f == 0) { char *commargs[argc]; commargs[0] = argv[1]; for (int i = 0; i < argc - 2; i++) commargs[i+1] = argv[i+1]; commargs[argc - 1] = NULL; int w = open(argv[argc-1], O_WRONLY | O_CREAT, 0755); dup2(w, 1); close(w); execvp(*commargs, commargs + 1); } else { int status = -2; wait(&status); printf("Exit: %d\n", status); } }