Ciao a tutti. Ho provato a scrivere un programma ma volevo salvare su file il risultato di ciò che veniva scritto su stdout da una chiamata a sistema system().
Ho provato collegando a stdout a un altro file prima della chiamata a system() ma poi subito dopo voglio ricollegarlo allo stream standard, come posso fare?
Ho provato con un puntatore a FILE* a copiare stdout ma non fa quello che dovrebbe.
Vi posto il codice.
Codice PHP:
/*
* ls.c
*
*
* Created by Tommaso Ricci on 09/05/11.
* Copyright 2011 __MyCompanyName__. All rights reserved.
*
*/
#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *stdo1;
char nome[] = "prova.txt";
stdo1 = stdout;
freopen(nome, "w", stdout);
system("ls");
stdout = stdo1;
printf("%s", nome);
return 0;
}
Il problema è che la printf (la invoco per provare che lo stream torni quello standard) continua a scrivere su prova.txt e non sullo stream standard anche dopo questo mio tentativo (fallito) di rimetterlo a posto.