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