Hi Andreas,
On Thu, Oct 21, 2004 at 16:11:47 +0200, Andreas Kretschmer wrote:
auf einem Rechner habe ich:
open("/dev/random", O_RDONLY) = 9
[...]
read(9, "2\25\34O\326d\213\225\240\312\200'\237\212\236z\216!\n"..., 4096) = 340 auf einem anderen, quasi Spiegel-rechner:
open("/dev/random", O_RDONLY) = 9
[...]
read(9,
An dieser Stelle bleibt der Proze? stehen. Was ist da los?
Aus /dev/random kommen immer nur so viele Bytes raus, wie der Entropie-Pool des Kernels vorraetig hat.
Der Pool wird durch zufaellige Ereignisse (z.B. Interrupts, erzeugt von Netzwerkkarten, IDE-Controllern, Keyboard, ...) gefuellt. Bleiben diese laengere Zeit aus, blockiert das Lesen von /dev/random so lange, bis der Entropie-Pool wieder entsprechend gefuellt ist.
Das /dev/random soll also "gute" -- weil nicht vorhersagbare -- Zufallszahlen liefern. Die "Billigvariante" ist /dev/urandom, das bei leerem Entropie-Pool mit Pseudo-Zufallszahlen weitermacht.
(Siehe dazu auch /usr/src/linux/drivers/char/random.c, "Theory of operation")
PS.: das Programm ist 'gs'. Warum liest gs etwas aus /dev/random, wenn es eine *.ps nach PDF wandeln soll? Jedenfalls - gs ist damit kaputt
Keine Ahnung, vielleicht fuer (nicht vorhersagbare) Dateinamen von Temporaerdateien.
bye, Chris