2011-03-08 4 views
2

C++ 현재이 비트의 코드를 사용하여 을 사용하여 일부 데이터를 플롯합니다. Gnuplotfit 명령은 명령 줄 콘솔에서 원치 않는 출력을 많이 생성합니다.이 프로그램은 다른 프로그램에도 출력합니다.숨기기 C++ Gnuplot 파이프 콘솔 출력

이 출력은 내 콘솔 출력을 클러 터링하므로이 콘솔 출력을 비활성화하고 싶습니다. 이 작업을 수행하는 두 가지 방법이 있어야한다 : pipe를 사용하여 외부 프로그램에 의해 생성

  1. 숨기기 출력을 침묵 아니라 출력 할 gnuplot을 말하는 C++
  2. 에 훨씬

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 

답변

1

다음을 사용할 수 있습니다.

의 gnuplot 열려진를 사용하는 경우 16,

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

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

는 것을 시도했지만 작동하지 않습니다. Gnuplot은 피팅 과정에서 모든 signle 반복을 표시하는데 지옥처럼 보였습니다 – romeovs

+1

그냥 나에게 왔습니다 :'> 대신'2>를 사용하십시오! 외관상으로는'적합하다'는 오류 출력이다. 당신의 포스트를 편집하면 받아 들일 것이다. – romeovs

+1

주 :'/ dev/null' 창은'/ nul'이어야합니다. – HeyYO