Comment passer plusieurs commandes en utilisant popen en C?

GNUPLOT tracer des graphiques en utilisant GNUPLOT qui est une interface en ligne de commande. Mais je dois l’intégrer dans le programme c, de sorte que si le programme est exécuté, le graphique est tracé. Cela peut être fait en utilisant la commande popen . J’ai fait un code où je suis en train de faire popen("gnuplot","r") alors maintenant, quand j’exécute le programme, gnuplot démarre. Mais je dois envoyer plusieurs commandes comme popen("sin(x)","r") après popen("gnuplot","r") afin qu’un graphe de sin soit tracé lorsque j’exécute le code. Mais je ne sais pas comment passer plusieurs commandes. S’il vous plaît dites-moi comment puis-je passer plusieurs commandes en utilisant popen . S’il vous plaît aidez merci?

Voici le code que j’utilise pour envoyer une seule commande:

 #include  int main() { FILE *fp; int status; fp = popen("gnuplot","r"); pclose(fp); return 0; } 

Une fois que vous avez appelé popen (), votre descripteur de fichier ‘fp’ est ouvert et vous permet d’écrire des données via lesquelles la commande gnuplot verra en entrée. Notez que le type doit être ce que vous voulez faire avec le tube, pas ce que la commande va en faire, vous devez donc utiliser “w” puisque vous voulez écrire. Et vous pouvez émettre plusieurs commandes en séquence jusqu’à ce que vous ayez terminé.

Par exemple:

 #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; } 

Enverra “sin (x)” et “tan (x)” suivis par des retours à la ligne à travers le tube où gnuplot peut le lire en entrée.

Vous devriez écrire, ne pas lire, sur gnuplot , alors essayez:

 FILE *fp = popen("gnuplot","w"); if (!fp) { perror("popen gnuplot"); exit(EXIT_FAILURE); }; fprintf(fp, "plot sin(x)/x\n"); fflush(fp); 

N’oubliez pas de pclose(fp) où vous avez terminé. Mais cela fermera probablement le graphique tracé. Voir la question §7.8 de la FAQ de gnuplot