问题
有没有办法使用 c 构建两个独立的进程?在 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/