【问题标题】:Portable way to acquire per-boot random seed in C on Linux在 Linux 上以 C 语言获取每次启动随机种子的便携式方法
【发布时间】:2017-05-31 17:30:13
【问题描述】:

问题

有没有办法让两个独立的进程(在 Linux 上使用 构建)从全局位置获取某种每次启动的伪随机种子/值?


背景

简而言之,我有两个简单的进程想通过一个随机命名的 Unix 域套接字相互通信,如下所示:

  • 引导 #1:/var/run/abcd
  • 引导 #2:/var/run/sdfs

这个想法是随机化两个进程将在启动时使用的文件名,但他们需要知道一些方法来确定公共路径,而无需事先相互交谈。


工作至今

我已经尝试使用init 进程的starttime,通过在c 中有效地执行以下命令:

cat /proc/1/stat | cut -d ' ' -f22

但是,此值通常在每次启动时都相同,因此它不够随机。我在考虑写一个简单的 Linux 内核模块来提供这个值,但这似乎有点矫枉过正。


问题(redux)

是否有一些随机数据源在单次启动时保持不变,但在随后的启动中没有,我可以通过 Linux 中的非 root 进程读取这些数据?

【问题讨论】:

  • 为什么/dev/urandom不够好?只需在启动时将其保存在某个地方即可。

标签: c c linux random


【解决方案1】:

/proc/sys/kernel/random/boot_id 包含启动时生成的随机 UUID。

【讨论】:

  • 美丽。谢谢!这正是我想要的
猜你喜欢
  • 2011-01-26
  • 2016-08-25
  • 2013-08-08
  • 2013-09-03
  • 2010-11-11
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
相关资源
最近更新 更多