我创建了一个伪随机数生成器,我正在尝试传输出类似于有人运行的数据"$ cat/dev/urandom/"具体来说,我正在尝试将数据传输到更糟糕的 RNG 测试套件。
通常,从随机到死硬的阅读看起来像"$ cat/dev/urandom |Diehard -A -G 200">
我的程序旨在无限生成数字并将它们输出为 main:
def main():
... # setup and variables
for _ in iter(int,1): # infinite loop
PRNG_VAL = PRNG_FUNC(count_str,pad,1) # returns b'xx'
PRNG_VAL = int(PRNG_VAL,16) # returns integer
sys.stdout.write(chr(PRNG_VAL)) # integer to chr, similar to /dev/urandom type output
显然,当我运行类似的东西时"$ 猫 ./top.py |死难..."生成的输出只是对文件内容的读取。
我如何运行文件并将输出通过管道传输到 diehard,而不是读取 'top.py' 的内容,类似于从/dev/urandom 读取?
任何帮助不胜感激!
我如何而不是读取"top.py"的内容,而是运行文件并将输出通过管道传输到更顽固的......
在 sh
和大多数其他 POSIX shell 中,您以与通常运行它相同的方式运行它,并对其进行管道传输(与管道传输 cat
输出的方式相同(:
./top.py | dieharder
。或:
python top.py | dieharder
使用 cat /dev/urandom
的原因是urandom
不是一个程序,而是一个文件。当然,它不是磁盘上充满字节的常规文件,它是一个特殊的设备文件,由设备驱动程序创建并通过mknod
挂载,但您不必担心(除非您想编写自己的设备驱动程序(;它就像是一个充满字节的常规文件一样。你不能轻易地做同样的事情,但你不必这样做。
您应该阅读有关基本 shell 脚本的好教程。我没有推荐的,但我相信有很多。