我正在尝试使用GNUPLOT
绘制图形,这是一个命令行界面。但我需要将它集成到c程序中,这样如果程序执行,则绘制图形。这可以通过使用popen
命令来完成。我已经制作了一个代码,我正在做popen("gnuplot","r")
所以现在当我执行程序时,gnuplot启动了。但我需要在popen("sin(x)","r")
之后发送多个命令,如popen("gnuplot","r")
,以便在执行代码时绘制sin图。但我不知道如何传递多个命令。请告诉我如何使用popen
传递多个命令。请帮忙谢谢?
以下是我用来发送单个命令的代码:
#include <stdio.h>
int main()
{
FILE *fp;
int status;
fp = popen("gnuplot","r");
pclose(fp);
return 0;
}
答案 0 :(得分:2)
你应该写{而非阅读'到gnuplot
,所以试试:
FILE *fp = popen("gnuplot","w");
if (!fp) { perror("popen gnuplot"); exit(EXIT_FAILURE); };
fprintf(fp, "plot sin(x)/x\n");
fflush(fp);
不要忘记pclose(fp)
你完成的地方。但这可能会关闭绘制的图形。请参阅gnuplot FAQ
答案 1 :(得分:1)
一旦调用了popen(),你的文件描述符'fp'就会打开,并允许你通过它写入数据,gnuplot命令将把它看作输入。请注意,类型应该是您想要对管道执行的操作,而不是命令将对其执行的操作,因此您应该使用'w',因为您要编写。并且您可以按顺序发出多个命令,直到完成为止。
例如:
#include <stdio.h>
int main()
{
FILE *fp;
int status;
fp = popen("gnuplot","w");
fprintf(fp, "plot sin(x)\n");
fprintf(fp, "plot tan(x)\n");
pclose(fp);
return 0;
}
将通过管道发送“sin(x)”和“tan(x)”后跟换行符,gnuplot可以将其作为输入读取。