2011-03-08 2 views
2

En C++ J'utilise actuellement ce bit de code pour tracer des données en utilisant gnuplot. Gnuplot La commande fit produit cependant beaucoup de sortie non désirée sur la console de ligne de commande (que j'utilise pour sortir d'autres choses aussi, tout au long de mon programme).masquer C++ Gnuplot sortie de la console de tuyau

Comme cette sortie encombre la sortie de ma console, je voudrais la désactiver. Il devrait y avoir 2 façons de le faire:

  1. Cacher sortie créé par des programmes externes à l'aide pipe dans C++
  2. Dire gnuplot se taire et non sortie beaucoup

FILE *pipe = popen("gnuplot -persist", "w");//open up a pipe to gnuplot

fprintf(pipe, "set terminal x11 enhanced\n"); //set appropriate output terminal for the plot 
fprintf(pipe, "set xlabel 'N'\n");//set xlabel 
fprintf(pipe, "set ylabel 'error'\n");//set ylabel 
fprintf(pipe, "set yrange [0:0.0001]\n");//set the y range 
fprintf(pipe, "plot 'dataSimp.dat' ti 'Simpson method'\n");//plot the Simp error 
fprintf(pipe, "replot 'dataTrap.dat' ti 'Trapezium method' \n");//plot the Trap error 
fprintf(pipe, "replot 1/(x**2) ti '1/{x^2}'\n");//plot y=1/(x^2) function for comparison 
fprintf(pipe, "replot 1/(x**4) ti '1/{x^4}'\n");//plot y=1/(x^4) function for comparison 

//fit curve to dataSimp 
fprintf(pipe, "set output 'rommel.txt'"); 
fprintf(pipe, "fSimp(x)=aSimp/(x**4) \n"); 
fprintf(pipe, "fit fSimp(x) 'dataSimp.dat' via aSimp\n"); 
fprintf(pipe, "replot aSimp/(x**4) ti 'fitted aSimp/{x^4}'\n"); 

//fit curve to dataSimp 
fprintf(pipe, "fTrap(x)=aTrap/(x**2) \n"); 
fprintf(pipe, "fit fTrap(x) 'dataTrap.dat' via aTrap \n"); 
fprintf(pipe, "replot aTrap/(x**2) ti 'fitted aTrap/{x^2}'\n"); 

pclose(pipe);//close gnuplot pipe 

Répondre

1

Vous pouvez simplement utiliser:

FILE *pipe = popen("gnuplot -persist > /dev/null", "w") 

Ou, si gnuplot utilise stderr:

FILE *pipe = popen("gnuplot -persist > /dev/null 2>&1", "w") 
+0

essayé, mais ça ne marche pas. Gnuplot semble vouloir montrer toutes les itérations de signle dans le processus d'ajustement – romeovs

+1

Il m'est juste venu à l'esprit: en utilisant '2>' au lieu de '>' ça marche! Apparemment, les 'ajustement 'sont des sorties d'erreur. Modifier votre message et je vais accepter. – romeovs

+1

Remarque: Dans les fenêtres '/ dev/null' doit être'/nul'. – HeyYO