2016-04-25 19 views
0

新しいプロセスが起動するたびに、(プロセスに属する)変数に新しいランダム値を与えたいと思う。Linuxのプロセス:すべての子プロセスをスリープ状態にする。

作成するすべてのプロセスをランダムな秒数にするには、このランダム生成が必要です。プログラムの冒頭で私は srand(time(NULL))を使用し、プロセスが実行する機能では私は

int sleeptime = rand() % 16 + 5; //that's because I need values from 5 to 20を使用しました。

私はこのようなことを実装しようとしましたが、すべてのプロセスで変数の値が同じであることがわかりました。

srand(..)の引数として、現在の時間をミリ秒(それぞれのプロセスが始まる時間)で取った場合、私はランダムな値を取得すると思います。問題は私がこれに関する情報を見つけられなかったことです。別のページで提案されているのは、よく知られていることです:srand(time(NULL));(time(NULL)は現在の時刻を秒単位で返します)。

これを実装する方法を教えてください。前もって感謝します。

+1

すべてのプロセスは同時に起動するので、おそらくは同じ時刻で 'srand'を呼び出すことになり、' rand'から同じ乱数を返すことになります。あなたは 'srand'のためのより良いランダム化の源を必要とします。 –

+1

問題の解決策を見つけました。 http://stackoverflow.com/questions/8623131/why-is-rand-not-so-random-after-fork –

答えて

1

Linuxの場合は、/dev/randomから読み取ってPRNGをシードします。

関連する問題