在Linux上以C语言获取每个引导随机种子的便携方式

时间:2017-01-16 19:35:26

标签: c linux random

问题

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

背景

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

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

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

到目前为止工作

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

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

但是,此值在启动到启动时通常是相同的,因此它不够随机。我在考虑编写一个可以提供这个值的简单Linux内核模块,但这看起来有些过分。

问题(redux)

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

1 个答案:

答案 0 :(得分:6)

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