Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将目录路径转换为唯一的数字标识符(Linux / C)?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在研究获取目录(文件夹)并获取某种形式的唯一数字标识符的方法.我已经研究过“字符串到哈希”方法,但是, Pigeon Hole Principle意味着永远不能为每个字符串派生一个真正唯一的数字. 字符串到唯一哈希是没有用的. 我最近一直在研究实现目标的其他方法,因此有以下问题要问: 目录时间戳 – 它们的“独特性”如何? 如“here”(第二篇文章)所述,“stat”报告的时间戳是什么分辨率
我正在研究获取目录(文件夹)并获取某种形式的唯一数字标识符的方法.我已经研究过“字符串到哈希”方法,但是,Pigeon Hole Principle意味着永远不能为每个字符串派生一个真正唯一的数字.

字符串到唯一哈希是没有用的.

我最近一直在研究实现目标的其他方法,因此有以下问题要问:

目录时间戳 – 它们的“独特性”如何?
如“here”(第二篇文章)所述,“stat”报告的时间戳是什么分辨率?如果分辨率足够小,多个文件夹是否可以在Linux系统上共享完全相同的时间戳?

如果有人有其他方法/技术他们想分享,我会很乐意听:)

编辑1为了澄清我的用例以回应到目前为止发布的答案:我正在使用Android平台,因此文件系统没有链接到任何其他(当然除了可移动媒体,如Micro SD卡).

我将每个路径插入@L_450_15@,但在查询表时尝试避免字符串比较.这里不能使用map / hashmaps.是的,路径本身是唯一的,但理想情况下我需要一个数字标识符,可用于查询表而不是路径本身.标识符每个路径也必须是唯一的.我已经尝试过std :: collat​​e,但发现哈希中有很多碰撞(一个20,000个路径的数据集,大约100个碰撞).更令人惊讶的是,每次我的应用程序运行时,哈希值似乎都大不相同.我想知道它是否以某种方式播种?

非常感谢,
P

解决方法

在任何基于UNIX的系统上,您可以使用inode编号作为该文件系统中的唯一标识符.将其与设备编号相结合将使其在机器中独一无二.如果您希望它是全局唯一的,您可以输入系统的主MAC地址.

但请记住:

>如果移动或重命名目录,则inode编号将“跟随”该目录.如果删除并替换目录,它将更改.>除了一个或两个非常特殊的目录之外,inode编号在系统之间不会很稳定. (例如,/通常是inode 2.)

大佬总结

以上是大佬教程为你收集整理的如何将目录路径转换为唯一的数字标识符(Linux / C)?全部内容,希望文章能够帮你解决如何将目录路径转换为唯一的数字标识符(Linux / C)?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。