[Pluto-devel] Redirezione dell'output in C

Max & Marco max.marco@libero.it
Wed, 24 Apr 2002 17:10:37 +0200


>Il problema è che quello di cui tu parli funziona nella shell ma non
all'interno di un programma in C. >Io ho bisogno di eseguire "ls" tramite
una "exec" presente nel mio sorgente C redirigendo il suo >output in una
file. Se io scrivo exec("ls > file.txt"......) mi viene segnalato che il
file "ls > file.txt" non >esiste..... Come posso fare ?

prova a vedere se il codice che segue risponde al tuo problema:

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
pid_t   pid;

        pid = fork();
        if (pid == 0) {
                // qui sono nel processo figlio
                // chiudo lo standard output
                close(1);
                // apro il file che mi interessa
                // gli viene assegnato il "posto" di stdout visto che e' il
primo libero
                creat("outputfile", S_IRUSR | S_IWUSR );
                execl("hello", NULL);
                perror("Errore nella exec");
                return(1);
        }
        // qui ci arrivo solo nel processo padre
        if (pid == -1) {
                perror("Errore nella fork");
                return(1);
        }
        else {
                wait(NULL);
                printf("Processo terminato\n");
        }
        return(0);

}


Ciao
    Marco