C言語でUUIDを生成する方法
提供: C言語入門
スポンサーリンク
UUID(Universally Unique Identifier) とは、ソフトウェア上でオブジェクトを一意に識別するための識別子です。分散システムで統制なしに作成できる識別子として設計されていて、将来的にも衝突が起きない前提で利用できます。
読み方
- uuid
- ゆーゆーあいでぃー
目次
概要
UUIDは、利用者にユニークなIDを振ったり、分散ストレージでオブジェクトの識別用にIDを振ったりするときに、使えるID(識別子)です。
UUIDの例
UUIDは、以下のようなフォーマットです。
$ cat /proc/sys/kernel/random/uuid edd751bf-f1fc-4ce6-8520-ff7c263ff02b
UUIDの作り方
UUIDは、
- /proc/sys/kernel/random/uuid
- uuidgen コマンド
- libuuid
などを使うことで作成できます。
インストール
Ubuntuの場合
sudo apt install uuid-dev
uuid1.c の例
ソースコード uuid1.c
/* * uuid1.c * Copyright (C) 2018 kaoru <kaoru@localhost> * * Distributed under terms of the MIT license. */ #include <uuid/uuid.h> #include <stdio.h> #include <stdlib.h> const int uuid_len = 36+1; // 36byte string + null int main(int argc, char *argv[]) { uuid_t u1; char out[uuid_len]; uuid_generate(u1); uuid_unparse(u1, out); (void)printf("%s\n", out); exit(EXIT_SUCCESS); }
コンパイル
Windows10のWSL(Windows Subsystem for Linux) のUbuntu の環境で -L で libuuid.so のあるパスを指定したが、コンパイルできなかったので、直接 .so を指定することになりました。
cc -luuid uuid1.c /usr/lib/x86_64-linux-gnu/libuuid.so -o uuid1
失敗したときの例は、以下の通りです。
$ cc -L/lib/x86_64-linux-gnu -luuid uuid1.c /tmp/ccOHMvUz.o: In function `main': uuid1.c:(.text+0x86): undefined reference to `uuid_generate' uuid1.c:(.text+0x99): undefined reference to `uuid_unparse' collect2: error: ld returned 1 exit status
実行例
% ./uuid1 d8981b3a-ec33-4bda-8eba-09aa172bb2a9
関連項目
ツイート
スポンサーリンク