La génération aléatoire des Uuid dans Linux
Je suis coincé dans une étrange situation. J'ai besoin de générer des Uuid dans mon programme Linux (qui, je le distribuer à l'aide de Rpm). Je ne veux pas ajouter une autre dépendance de ma demande, en demandant à l'utilisateur d'installer libuuid (on dirait que libuuid n'est pas inclus dans la plupart des distributions Linux, comme CentOS).
N'est-il pas un standard d'appel système Linux, qui génère de l'Uuid (comme par exemple, dans Windows il y CoCreateGuid)? Que fait la commande uuidgen utiliser?
uuidgen utilise libuuid.
OriginalL'auteur themoondothshine | 2010-02-01
Vous devez vous connecter pour publier un commentaire.
Suis-je raté quelque chose? Ne pouvez-vous pas:
OriginalL'auteur VMcPherron
Merci à tous pour vos commentaires!
Je suis passé par chacun, et voici ce qui convenait à mes exigences les meilleurs:
Ce que je devais était tout simplement en fonction du temps Uuid qui ont été générés à partir des nombres aléatoires une fois pour chaque utilisateur qui a installé l'application. L'UUID de la version 4 comme spécifié dans la RFC 4122 était exactement ça. Je suis allé par le biais d'un l'algorithme proposé, et est venu avec une jolie solution simple qui fonctionne sous Linux ainsi que Windows (c'est Peut-être trop simpliste, mais il ne satisfaire le besoin!):
La terminologie est un peu déroutant de l'expression "en fonction du temps UUID" n'est pas la version 4, mais la version 1. Sur le plan théorique, en utilisant le module 0x3fff ne serait pas vous donner une distribution efficace des sorties, bien que je doute qu'il n'aurait aucune incidence pratique.
OriginalL'auteur themoondothshine
Un bon moyen que j'ai trouvé (pour linux dev) est à
#include <uuid/uuid.h>
. Ensuite, vous avez quelques fonctions que vous pouvez appeler:OriginalL'auteur Chef Pharaoh
Est-il une raison pourquoi vous ne pouvez pas lier statiquement à libuuid?
libuuid semble être LGPL, de sorte que les OP de l'application devrait également être de la LGPL. La liaison dynamique évite l'exigence d'une licence. Source. Sauf si vous parlez une autre libuuid.
OriginalL'auteur caf
Peut-être ooid vous aider? http://ooid.sourceforge.net/
OriginalL'auteur
Pas de système d'appel n'existe pas dans POSIX pour générer des UUID, mais je suppose que vous pouvez trouver quelque part un BSD/MIT le code pour générer le UUID. ooid est publié sous le coup de pouce de licence du logiciel, qui, selon wikipedia, est une licence permissive dans le style de BSD/MIT. Ensuite, vous pouvez simplement coller dans votre application, sans avoir à ajouter des dépendances.
OriginalL'auteur Stefano Borini