[C] Problema GNUPlot con código C

Iniciado por valen7valverde, 8 Mayo 2020, 04:31 AM

0 Miembros y 1 Visitante están viendo este tema.

valen7valverde

Hola, compañerxs.

Estoy montando un programita muy sencillo que genera números aleatorios a través del algoritmo de Congruencia Lineal. El caso es que quiero graficar los puntos (que guardo en un fichero, previamente) con gnuplot. Cuando compilo y ejecuto el programa me aparece el siguiente error del que no he conseguido encontrar solución ni en stackoverflow ni en github.

[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
gnuplot: ../../src/xcb_io.c:259: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.
Aborted (core dumped)

Este el el código del programa. Si alguien sabe algo le agradezco que me ayude.
Gracias de antemano.

Saludos!!!


#include "stdio.h"
#include "stdlib.h"
#include "X11/Xlib.h"




/*
   Input:
       - Semilla
       - congruencia (c)
       - constante multiplicativa
       - constante incremento
       - numero de terminos solicitados
*/

int main(int argc, char const *argv[])
{
   XInitThreads();

   
   if(argc != 6){
       printf("err: %s <seed> <mod> <a> <b> <N>\n", argv[0]);
       exit(0);
   }

   

   int term = atoi(argv[1]);
   int mod  = atoi(argv[2]);
   int a    = atoi(argv[3]);
   int b    = atoi(argv[4]);
   int N    = atoi(argv[5]);


   FILE *f = fopen("out.out", "w");
   for(int i=0; i<N;i++){

       term = (a*term + b) % mod;
       fprintf(f, "%i\n", term);
   }

   fclose(f);

   //Con popen ejecutamos comnados por la shell
   FILE *gnuWindows = popen("gnuplot -persist", "w");
   fprintf(gnuWindows, "%s\n", "plot 'out.out'");
   // fprintf(gnuWindows, "%s\n", "set terminal png");
   // fprintf(gnuWindows, "%s\n", "set output graf.png");
   // fprintf(gnuWindows, "%s\n", "rep");
   // fprintf(gnuWindows, "%s\n", "set terminal wxt");
   
   fclose(gnuWindows);






   return 0;
}