[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: random_r functies



Hoi Eric,

Volgens deze website:
http://linux.die.net/man/3/random_r

Is deze functie een niet-standaard glibc extensie. Wellicht ligt het probleem daarin? Misschien heb je nog een stdlib-extensie nodig?

Succes en groet,
Ruud

On 11/22/2011 10:47 PM, Eric Meijer wrote:
Hoi allemaal,

Ik heb een progammeer-probleem en ik weet niet of het een bug is of ik iets over het over het hoofd zie.
Voor een multi-threaded programma (in C++) wil ik een random number generator gebruiken.  Hiervoor zijn de re-entrant versies van de random en initstate nodig.  Deze probeer ik nu uit met een simpel C programmaatje:

---- testrand.c ----
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
  struct random_data state1;
  const size_t bufsz = 256;
  char buf1[bufsz];
  int32_t r1;

  fprintf(stderr, "%d\n", initstate_r(1u, buf1, bufsz, &state1));
  random_r(&state1, &r1);
  fprintf(stderr, "%d\n", r1);

  return 0;
}
----

Als ik dit bouw met gcc 4.4.5 op een up-to-date squeeze systeem met
gcc -o testrand testrand.c
dan krijg ik een executable die een segmentation fault geeft in de file "random_r.c" die niet op het systeem staat
(volgens gdb).

Heeft iemand enig idee of ik hier nog iets fout doe?  Zijn er debian mailing lists die voor dit soort vragen geschikter zijn?
Ik draai kernel 2.6.32-5-686-bigmen, libc6-dev 2.11.2-10.

Groeten,
Eric



Reply to: