【发布时间】:2017-05-31 17:30:13
【问题描述】:
问题
有没有办法让两个独立的进程(在 Linux 上使用 c 构建)从全局位置获取某种每次启动的伪随机种子/值?
背景
简而言之,我有两个简单的进程想通过一个随机命名的 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不够好?只需在启动时将其保存在某个地方即可。