この記事は 42Tokyo Advent Calendar 2025 の12日目の記事です
はじめに
記事を読んでくれたみなさんこんばんは、komatsukです。
2025年10月から42Tokyoに所属しています。今までブログ等は書いたことがなかったのですが、何故か指が勝手に登録ボタンを押していたので12日目の記事を担当することになりました。そんな感じなので登録した数日後には、何で登録したんだろ?と思っていたのですが、せっかく書くなら多少なりとも勉強になることを書きたいなーと思い、今回のテーマを考えました。
タイトルの通り「少しだけ」なので、調べの甘さが多々あります。記事を読んで何か思うところがあった方は、是非ともコメントで指摘していただきたいです。また、文章自体にも変な箇所があると思いますが、そこに関しては少しで良いので目をつむっていただければと思います()
本編
manとは?
Unix/Linux系OSで、コマンド・システムコール・ライブラリ関数等の説明書を読むためのコマンド。とりあえずmanを叩けば、初見の関数やコマンドも最低限使えるようになります。
今回読むman-page
strlen(3) Library Functions Manual strlen(3)
NAME
strlen - calculate the length of a string
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <string.h>
size_t strlen(const char *s);
DESCRIPTION
The strlen() function calculates the length of the string pointed to by s, excluding the terminating null byte ('\0').
RETURN VALUE
The strlen() function returns the number of bytes in the string pointed to by s.
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ Interface │ Attribute │ Value │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ strlen() │ Thread safety │ MT-Safe │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
STANDARDS
C11, POSIX.1-2008.
HISTORY
POSIX.1-2001, C89, SVr4, 4.3BSD.
NOTES
In cases where the input buffer may not contain a terminating null byte, strnlen(3) should be used instead.
SEE ALSO
string(3), strnlen(3), wcslen(3), wcsnlen(3)
Linux man-pages 6.7 2023-10-31 strlen(3)
ヘッダ行
strlen(3) Library Functions Manual strlen(3)
左から、タイトル(セクション番号)・カテゴリ・タイトル(セクション番号)。
タイトルが2つあるのは左右対称にするためだそうです。
セクション番号はLinuxの共通規格であり、3はシステムコール関数を除く全てのライブラリ関数が含まれます。Library Functions Manual はセクション3に対応するカテゴリ名ですが、カテゴリ名は各manパッケージ毎に異なる場合があります。
NAME
NAME
strlen - calculate the length of a string
関数名とその概要。
strlenは文字列の長さを計算します。
LIBRARY
LIBRARY
Standard C library (libc, -lc)
関数が含まれているライブラリ名と必要なリンカオプション。
Standard C libraryとは、ISO C 規格で定められた関数群のことです。
SYNOPSIS
SYNOPSIS
#include <string.h>
size_t strlen(const char *s);
書式(関数の使い方)、具体的にはインクルードする必要のあるヘッダファイルと関数の型。
string.hは文字列やメモリを操作するための関数が含まれるヘッダーファイルであり、strlenは文字列を引数として受け取りsize_t型の値を返す関数です。
DESCRIPTION
DESCRIPTION
The strlen() function calculates the length of the string pointed to by s, excluding the terminating null byte ('\0').
関数の動作について。
strlenはsが指す文字列の長さを終端文字(\0)を除いて計算します。
RETURN VALUE
RETURN VALUE
The strlen() function returns the number of bytes in the string pointed to by s.
戻り値について。
strlenは、sが指す文字列のバイト数を返します。
ATTRIBUTES
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ Interface │ Attribute │ Value │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ strlen() │ Thread safety │ MT-Safe │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
関数の様々な属性について。
Interfaceは対象関数、Attributeは属性の種類、Valueは属性の値です。strlenの場合、Attributeはスレッド安全についてで、その値はMT-Safe(Multi-Thread-Safe, 複数スレッドから安全に呼び出せる)となっています。
STANDARDS
STANDARDS
C11, POSIX.1-2008.
関数がどの規格に準拠しているか。
strlen関数は、ISO(国際標準化機構)の2011年版と、POSIX(Unixの共通仕様を定めた標準, シェル・システムコール・一部の標準Cライブラリを扱う)の2008年版の両方に定義されています。
HISTORY
HISTORY
POSIX.1-2001, C89, SVr4, 4.3BSD.
関数の歴史(どの規格から使用されているか)について。
strlenは、POSIX2001年版、ISO-C1989年版、Unix-SystemV4(多くのUnixの起源にもなった)、BSD(Berkeley Software Distribution, FreeBSD・MacOS等の基礎にもなった)1986年版から定義されています。
NOTES
NOTES
In cases where the input buffer may not contain a terminating null byte, strnlen(3) should be used instead.
留意点について。
文字列にヌル文字(\0)が含まれていない可能性がある場合には、strlenの代わりにstrnlenを使用するべきです。
SEE ALSO
SEE ALSO
string(3), strnlen(3), wcslen(3), wcsnlen(3)
関連項目。
ここでは、関連する関数が列挙されています。
ヘッダ行
Linux man-pages 6.7 2023-10-31 strlen(3)
左から、man-pageのバージョン、man-pageの最後に更新された日時、関数名(セクション番号)。
おわりに
正直、元々自由に文章を書くことには苦手意識が強く、加えて今結構忙しくて(時間的にというより精神的にですが)、一時は記事を書こうと思った過去の自分を恨んだりもしました。それでも、いつも読んでいるmanも改めて読むと意外と読み飛ばしている箇所があったんだなと気付けたり、何より、こういう場で文章を書く経験を出来たことは勉強になったなと思います。
「何か書いてくれない?」と言われた時に、「あー全然いいよ」と言って面白い記事をサラッと書けたらすごくカッコいいと個人的に思うので、そのために今後はアウトプットの数も意識していきたいです。
では、ここまで読んでくださったみなさん、またどこかで
追記:そういえば冒頭の挨拶で「こんばんは」と言ったのは、単に記事を書いているのが夜だからなのですが、「おはよう」には「ございます」が付くのに、「こんにちは」「こんばんは」には付かないこと(というより何で丁寧な表現にしにくい挨拶が広く使用されることになったか)を今ふと疑問に思いました。どなたか知っていたら教えてください。