「C言語でUUIDを生成する方法」の版間の差分
提供: C言語入門
(ページの作成:「UUID(Universally Unique Identifier) とは、ソフトウェア上でオブジェクトを一意に識別するための識別子です。分散システムで統制な...」) |
|||
(同じ利用者による、間の1版が非表示) | |||
行7: | 行7: | ||
== 概要 == | == 概要 == | ||
UUIDは、利用者にユニークなIDを振ったり、分散ストレージでオブジェクトの識別用にIDを振ったりするときに、使えるID(識別子)です。 | UUIDは、利用者にユニークなIDを振ったり、分散ストレージでオブジェクトの識別用にIDを振ったりするときに、使えるID(識別子)です。 | ||
+ | == UUIDの例 == | ||
+ | '''UUID'''は、以下のようなフォーマットです。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ cat /proc/sys/kernel/random/uuid | ||
+ | edd751bf-f1fc-4ce6-8520-ff7c263ff02b | ||
+ | </syntaxhighlight> | ||
+ | == UUIDの作り方 == | ||
+ | '''UUID'''は、 | ||
+ | * /proc/sys/kernel/random/uuid | ||
+ | * uuidgen コマンド | ||
+ | * libuuid | ||
+ | などを使うことで作成できます。 | ||
== インストール == | == インストール == | ||
=== Ubuntuの場合 === | === Ubuntuの場合 === | ||
行42: | 行54: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cc -luuid uuid1.c /usr/lib/x86_64-linux-gnu/libuuid.so -o uuid1 | cc -luuid uuid1.c /usr/lib/x86_64-linux-gnu/libuuid.so -o uuid1 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 失敗したときの例は、以下の通りです。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ 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 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 実行例 === | === 実行例 === |
2018年3月17日 (土) 18:05時点における最新版
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