如何将类似于/dev/urandom的Python PRNG脚本中的数据管道输出到Diehard中

2024-06-25 07:00:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个伪随机数生成器,我正在尝试通过管道输出数据,类似于某人运行 “$cat/dev/urandom/” 具体来说,我正在尝试将数据传输到dieharderng测试套件。你知道吗

通常,从天王星到迪哈德的阅读看起来像 “$cat/dev/urandom | diehard-a-g 200”

我的程序设计为无限生成数字,并以如下形式输出:

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

很明显,当我像 “$猫/顶部.py|更难……” 结果输出只是读取文件的内容。你知道吗

我该怎么做,而不是读顶部.py,运行该文件并将输出管道化到diehard中,类似于从/dev/urandom中读取?你知道吗

感谢您的帮助!你知道吗


Tags: 文件to数据pydev管道valinteger
1条回答
网友
1楼 · 发布于 2024-06-25 07:00:10

How do I, instead of read the contents of 'top.py', run the file and pipe the output into dieharder…

sh和大多数其他POSIX shell中,运行它的方式与通常运行它的方式相同,并对其进行管道处理(与管道处理cat的输出的方式相同):

./top.py | dieharder

…或:

python top.py | dieharder

使用cat /dev/urandom的原因是urandom不是程序,而是文件。当然,它不是一个在磁盘上充满字节的常规文件,它是一个特殊的设备文件,由设备驱动程序创建并通过mknod挂载,但您不必担心这一点(除非您想编写自己的设备驱动程序);它的行为就好像它是一个充满字节的常规文件一样。你不可能轻易地做同样的事情,但你也不必这么做。你知道吗


你应该读一本关于基本shell脚本的好教程。我没什么好推荐的,但我肯定有很多。你知道吗

相关问题 更多 >