// redirect.c — así implementa la shell "wc -l redirect.c > salida.txt":
// entre fork() y exec(), el hijo cambia su salida estándar.
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

int main(void) {
    pid_t rc = fork();
    if (rc < 0) {
        perror("fork");
        exit(1);
    }
    if (rc == 0) {
        int fd = open("salida.txt", O_CREAT | O_WRONLY | O_TRUNC, 0644);
        if (fd < 0) {
            perror("open");
            exit(1);
        }
        dup2(fd, STDOUT_FILENO);   // la salida estándar ahora es el archivo
        close(fd);

        char *args[] = {"wc", "-l", "redirect.c", NULL};
        execvp(args[0], args);
        perror("execvp");
        exit(1);
    }

    waitpid(rc, NULL, 0);
    printf("listo: ver salida.txt\n");
    return 0;
}
