「C言語でUUIDを生成する方法」の版間の差分

提供: C言語入門
移動: 案内検索
(ページの作成:「UUID(Universally Unique Identifier) とは、ソフトウェア上でオブジェクトを一意に識別するための識別子です。分散システムで統制な...」)
 
行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の場合 ===

2018年3月17日 (土) 15:38時点における版

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

実行例

% ./uuid1
d8981b3a-ec33-4bda-8eba-09aa172bb2a9

関連項目