Я пытаюсь построить графики, используя GNUPLOT
который является интерфейсом командной строки. Но мне нужно интегрировать его в c-программу, так что если программа будет выполнена, график будет нанесен на график. Это можно сделать, используя команду popen
. Я сделал код, где я делаю popen("gnuplot","r")
поэтому теперь, когда я запускаю программу, запускается gnuplot. Но мне нужно отправить несколько команд, таких как popen("sin(x)","r")
после popen("gnuplot","r")
чтобы график графика отображался при выполнении кода. Но я не знаю, как передать несколько команд. Пожалуйста, расскажите мне, как я могу передать несколько команд, используя popen
Пожалуйста, помогите спасибо?
Вот код, который я использую для отправки одной команды:
#include int main() { FILE *fp; int status; fp = popen("gnuplot","r"); pclose(fp); return 0; }
После того, как вы вызвали popen (), ваш файловый дескриптор «fp» открыт и позволяет вам записывать данные через него, которые команда gnuplot увидит в качестве входных данных. Обратите внимание, что тип должен быть тем, что вы хотите делать с каналом, а не с тем, что команда будет делать с ним, поэтому вы должны использовать «w», так как вы хотите писать. И вы можете выпустить несколько команд последовательно, пока не закончите.
Например:
#include 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
, поэтому попробуйте:
FILE *fp = popen("gnuplot","w"); if (!fp) { perror("popen gnuplot"); exit(EXIT_FAILURE); }; fprintf(fp, "plot sin(x)/x\n"); fflush(fp);
Не забудьте сделать pclose(fp)
где вы закончите. Но это, вероятно, закроет график. См. Вопрос §7.8 о часто задаваемых вопросах gnuplot