如何在 C 中使用 popen 传递多个命令?
How to pass multiple commands using popen in C?
我正在尝试使用 GNUPLOT
绘制图表,这是一个命令行界面。但我需要将它集成到 C 程序中,以便在程序执行时绘制图形。这可以通过使用 popen
命令来完成。我已经在我正在做的地方编写了代码 popen("gnuplot","r")
所以现在当我执行程序时,gnuplot 启动。但是我需要在 popen("gnuplot","r")
之后发送 popen("sin(x)","r")
等多个命令,以便在执行代码时绘制正弦图。但我不知道如何传递多个 commands.Please 告诉我如何使用 popen
传递多个命令。请帮忙谢谢?
这是我用来发送单个命令的代码:
#include <stdio.h>
int main()
{
FILE *fp;
int status;
fp = popen("gnuplot","r");
pclose(fp);
return 0;
}
你应该写,而不是读,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
的 §7.8 问题
调用 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 可以将其作为输入读取。
我正在尝试使用 GNUPLOT
绘制图表,这是一个命令行界面。但我需要将它集成到 C 程序中,以便在程序执行时绘制图形。这可以通过使用 popen
命令来完成。我已经在我正在做的地方编写了代码 popen("gnuplot","r")
所以现在当我执行程序时,gnuplot 启动。但是我需要在 popen("gnuplot","r")
之后发送 popen("sin(x)","r")
等多个命令,以便在执行代码时绘制正弦图。但我不知道如何传递多个 commands.Please 告诉我如何使用 popen
传递多个命令。请帮忙谢谢?
这是我用来发送单个命令的代码:
#include <stdio.h>
int main()
{
FILE *fp;
int status;
fp = popen("gnuplot","r");
pclose(fp);
return 0;
}
你应该写,而不是读,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
调用 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 可以将其作为输入读取。