[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