c - 在 Linux 上用 C 获取每次引导随机种子的可移植方法

标签 c linux random

问题

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


背景

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

  • 启动#1:/var/run/abcd
  • 启动 #2:/var/run/sdfs

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


到目前为止的工作

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

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

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


问题(redux)

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

最佳答案

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

关于c - 在 Linux 上用 C 获取每次引导随机种子的可移植方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683805/

相关文章:

java - 随机化子集中的数字

python - 同一个单词出现 KeyError

c - 在 C 代码中使用 Cat 命令

mysql - Linux 上的 Netbeans 用 C 连接到 MySQL 数据库

c - 如何将字符串复制到 C 中的数组?

linux - 在 bash 中以数学表达式的形式执行输入

ruby - 如何使用 `ip route` 从 'src' 命令的输出中选择 IP 地址

c - 了解 C 中 read() 和 lseek() 的功能

c - printf() 和格式说明符链接

python - 查找列表集合中变量的概率