LDP_man-pages/po4a/direct/po/ja.po の未完了ページ分の3つ目です。 <STATUS> stat: DP ppkg: LDP man-pages page: readdir.3 date: 2021/07/01 mail: amoto****@gmail***** name: Akihiro Motoki </STATUS> .\"O .TH READDIR 3 2019-03-06 "" "Linux Programmer's Manual" .TH READDIR 3 2019\-03\-06 "" "Linux Programmer's Manual" .\"O ---------------------------------------- .\"O .SH NAME .\"O readdir \- read a directory .SH 名前 readdir \- ディレクトリを読み込む .\"O ---------------------------------------- .\"O .SH SYNOPSIS .\"O .nf .\"O .B #include <dirent.h> .SH 書式 .nf \fB#include <dirent.h>\fP .\"O ---------------------------------------- .\"O .PP .\"O .BI "struct dirent *readdir(DIR *" dirp ); .\"O .fi .PP \fBstruct dirent *readdir(DIR *\fP\fIdirp\fP\fB);\fP .fi .\"O ---------------------------------------- .\"O .SH DESCRIPTION .\"O The .\"O .BR readdir () .\"O function returns a pointer to a \fIdirent\fP structure .\"O representing the next directory entry in the directory stream pointed .\"O to by \fIdirp\fP. .\"O It returns NULL on reaching the end of the directory stream or if .\"O an error occurred. .SH 説明 \fBreaddir\fP() 関数は、\fIdirp\fP が指すディレクトリストリームの中で、 次のディレクトリエントリーを表す \fIdirent\fP 構造体へのポインターを返す。 ディレクトリストリームの末尾に達した場合や、 エラーが発生した場合は、 NULL を返す。 .\"O ---------------------------------------- .\"O .PP .\"O In the glibc implementation, the .\"O .I dirent .\"O structure is defined as follows: .PP glibc の実装では \fIdirent\fP 構造体は以下のように定義されている。 .\"O ---------------------------------------- .\"O .PP .\"O .in +4n .\"O .EX .\"O struct dirent { .\"O ino_t d_ino; /* Inode number */ .\"O off_t d_off; /* Not an offset; see below */ .\"O unsigned short d_reclen; /* Length of this record */ .\"O unsigned char d_type; /* Type of file; not supported .\"O by all filesystem types */ .\"O char d_name[256]; /* Null-terminated filename */ .\"O }; .\"O .EE .\"O .in .PP .in +4n .EX struct dirent { ino_t d_ino; /* inode 番号 */ off_t d_off; /* オフセットではない; 下記を参照 */ unsigned short d_reclen; /* このレコードの長さ */ unsigned char d_type; /* ファイル種別。全ファイルシステム */ でサポートされているわけではない */ char d_name[256]; /* ヌル終端されたファイル名 */ }; .EE .in .\"O ---------------------------------------- .\"O .PP .\"O The only fields in the .\"O .I dirent .\"O structure that are mandated by POSIX.1 are .\"O .IR d_name .\"O and .\"O .IR d_ino . .\"O The other fields are unstandardized, and not present on all systems; .\"O see NOTES below for some further details. .PP \fIdirent\fP 構造体のフィールドのうち POSIX.1 で要求されているのは、 \fId_name\fP と \fId_ino\fP だけである。他のフィールドは非標準であり、すべてのシステムで存在するわけではない。 詳細については、下記の「注意」を参照のこと。 .\"O ---------------------------------------- .\"O .PP .\"O The fields of the .\"O .I dirent .\"O structure are as follows: .PP \fIdirent\fP 構造体のフィールドは以下の通りである: .\"O ---------------------------------------- .\"O .TP .\"O .I d_ino .\"O This is the inode number of the file. .TP \fId_ino\fP ファイルの inode 番号である。 .\"O ---------------------------------------- .\"O .TP .\"O .I d_off .\"O The value returned in .\"O .I d_off .\"O is the same as would be returned by calling .\"O .BR telldir (3) .\"O at the current position in the directory stream. .\"O Be aware that despite its type and name, the .\"O .I d_off .\"O field is seldom any kind of directory offset on modern filesystems. .\"O Applications should treat this field as an opaque value, .\"O making no assumptions about its contents; see also .\"O .BR telldir (3). .TP \fId_off\fP \fId_off\fP で返される値は、ディレクトリストリームの現在の位置で \fBtelldir\fP(3) を呼び出した場合の返り値と同じである。フィールドの型や名前はこうなっているが、最近のファイルシステムでは \fId_off\fP フィールドが何らかのディレクトリオフセットであることはめったにない。アプリケーションプログラムでは、必ずこの値を内容を意識せず単なる値として扱うべきであり、その内容について前提を持つべきではない。 \fBtelldir\fP(3) も参照。 .\"O ---------------------------------------- .\"O .TP .\"O .I d_reclen .\"O This is the size (in bytes) of the returned record. .\"O This may not match the size of the structure definition shown above; .\"O see NOTES. .TP \fId_reclen\fP 返されたレコードの (バイト単位の) サイズである。この値は上記の構造体の定義のサイズとは一致しないかもしれない。「注意」を参照。 .\"O ---------------------------------------- .\"O .TP .\"O .I d_type .\"O This field contains a value indicating the file type, .\"O making it possible to avoid the expense of calling .\"O .BR lstat (2) .\"O if further actions depend on the type of the file. .TP \fId_type\fP ファイル種別を示す値が格納される。これにより、これ以降の処理がファイル種別に依存している場合に \fBlstat\fP(2) を呼び出すコストを避けることができる。 .\"O ---------------------------------------- .\"O .IP .\"O When a suitable feature test macro is defined .\"O .RB ( _DEFAULT_SOURCE .\"O on glibc versions since 2.19, or .\"O .BR _BSD_SOURCE .\"O on glibc versions 2.19 and earlier), .\"O glibc defines the following macro constants for the value returned in .\"O .IR d_type : .IP 適切な機能検査マクロ (glibc 2.19 以降では \fB_DEFAULT_SOURCE\fP、 glibc 2.19 以前では \fB_BSD_SOURCE\fP) が定義されている場合、 glibc は \fId_type\fP の値に対応する以下のマクロ定数を定義する。 .\"O ---------------------------------------- .\"O .RS .RS .\"O ---------------------------------------- .\"O .TP 12 .\"O .B DT_BLK .\"O This is a block device. .TP 12 \fBDT_BLK\fP ブロックデバイスである。 .\"O ---------------------------------------- .\"O .TP .\"O .B DT_CHR .\"O This is a character device. .TP \fBDT_CHR\fP キャラクターデバイスである。 .\"O ---------------------------------------- .\"O .TP .\"O .B DT_DIR .\"O This is a directory. .TP \fBDT_DIR\fP ディレクトリである。 .\"O ---------------------------------------- .\"O .TP .\"O .B DT_FIFO .\"O This is a named pipe (FIFO). .TP \fBDT_FIFO\fP 名前付きパイプ (FIFO) である。 .\"O ---------------------------------------- .\"O .TP .\"O .B DT_LNK .\"O This is a symbolic link. .TP \fBDT_LNK\fP シンボリックリンクである。 .\"O ---------------------------------------- .\"O .TP .\"O .B DT_REG .\"O This is a regular file. .TP \fBDT_REG\fP 通常のファイルである。 .\"O ---------------------------------------- .\"O .TP .\"O .B DT_SOCK .\"O This is a UNIX domain socket. .TP \fBDT_SOCK\fP UNIX ドメインソケットである。 .\"O ---------------------------------------- .\"O .TP .\"O .B DT_UNKNOWN .\"O The file type could not be determined. .TP \fBDT_UNKNOWN\fP ファイル種別が判別できなかった。 .\"O ---------------------------------------- .\"O .RE .RE .\"O ---------------------------------------- .\"O .IP .\"O Currently, .\"O only some filesystems (among them: Btrfs, ext2, ext3, and ext4) .\"O have full support for returning the file type in .\"O .IR d_type . .\"O All applications must properly handle a return of .\"O .BR DT_UNKNOWN . .IP 現在のところ、 \fId_type\fP でファイルタイプを返す機能が完全にサポートされているのは、 いくつかのファイルシステムにおいてのみである (Btrfs, ext2, ext3, ext4 はサポートしている)。 どのアプリケーションも \fBDT_UNKNOWN\fP が返された際に適切に処理できなければならない。 .\"O ---------------------------------------- .\"O .TP .\"O .I d_name .\"O This field contains the null terminated filename. .\"O .IR "See NOTES" . .TP \fId_name\fP このフィールドはヌル終端されたファイル名である。「注意」を参照。 .\"O ---------------------------------------- .\"O .PP .\"O The data returned by .\"O .BR readdir () .\"O may be overwritten by subsequent calls to .\"O .BR readdir () .\"O for the same directory stream. .PP \fBreaddir\fP() によって返されるデータは、それ以降の同じストリームに対する \fBreaddir\fP() の呼び出しによって上書きされる可能性がある。 .\"O ---------------------------------------- .\"O .SH RETURN VALUE .\"O On success, .\"O .BR readdir () .\"O returns a pointer to a .\"O .I dirent .\"O structure. .\"O (This structure may be statically allocated; do not attempt to .\"O .BR free (3) .\"O it.) .SH 返り値 成功すると、 \fBreaddir\fP() は \fIdirent\fP 構造体へのポインターを返す。 (この構造体は静的に割り当てられているかもしれない。 このポインターを \fBfree\fP(3) しようとしないこと。) .\"O ---------------------------------------- .\"O .PP .\"O If the end of the directory stream is reached, NULL is returned and .\"O .I errno .\"O is not changed. .\"O If an error occurs, NULL is returned and .\"O .I errno .\"O is set appropriately. .\"O To distinguish end of stream from an error, set .\"O .I errno .\"O to zero before calling .\"O .BR readdir () .\"O and then check the value of .\"O .I errno .\"O if NULL is returned. .PP ディレクトリストリームの末尾に達した場合には、NULL が返され、 \fIerrno\fP は変化しない。 エラーが発生した場合、NULL が返され、 \fIerrno\fP が適切に設定される。エラーからストリームの末尾を区別するには、 \fBreaddir\fP() を呼び出す前に \fIerrno\fP を 0 に設定しておき、 NULL が返された場合に \fIerrno\fP の値を確認すればよい。 .\"O ---------------------------------------- .\"O .SH ERRORS .SH エラー .\"O ---------------------------------------- .\"O .TP .\"O .B EBADF .\"O Invalid directory stream descriptor \fIdirp\fP. .TP \fBEBADF\fP ディレクトリストリームディスクリプター \fIdirp\fP が無効である。 .\"O ---------------------------------------- .\"O .SH ATTRIBUTES .\"O For an explanation of the terms used in this section, see .\"O .BR attributes (7). .\"O .TS .\"O allbox; .\"O lb lb lb .\"O l l l. .\"O Interface Attribute Value .\"O T{ .\"O .BR readdir () .\"O T} Thread safety MT-Unsafe race:dirstream .\"O .TE .\"O .sp 1 .SH 属性 この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。 .TS allbox; lb lb lb l l l. インターフェース 属性 値 T{ \fBreaddir\fP() T} Thread safety MT\-Unsafe race:dirstream .TE .sp 1 .\"O ---------------------------------------- .\"O .PP .\"O In the current POSIX.1 specification (POSIX.1-2008), .\"O .BR readdir () .\"O is not required to be thread-safe. .\"O However, in modern implementations (including the glibc implementation), .\"O concurrent calls to .\"O .BR readdir () .\"O that specify different directory streams are thread-safe. .\"O In cases where multiple threads must read from the same directory stream, .\"O using .\"O .BR readdir () .\"O with external synchronization is still preferable to the use of the deprecated .\"O .BR readdir_r (3) .\"O function. .\"O It is expected that a future version of POSIX.1 .\"O will require that .\"O .BR readdir () .\"O be thread-safe when concurrently employed on different directory streams. .PP 現在の POSIX.1 標準 (POSIX.1\-2008) では、 \fBreaddir\fP() がスレッドセーフであることは求められていない。しかしながら、最近の実装 (glibc による実装も含む) では、異なるディレクトリストリームに対する \fBreaddir\fP() の同時並行の呼び出しはスレッドセーフである。複数のスレッドが同じディレクトリストリームから読み込みを行う必要がある場合も、非推奨の \fBreaddir_r\fP(3) 関数を使用するよりも、外部同期を用いた \fBreaddir\fP() を使う方が推奨される。 POSIX.1 の将来のバージョンでは、 \fBreaddir\fP() は異なるディレクトリストリームに対して同時に使用された際にスレッドセーフであることが必須となる予定である。 .\"O ---------------------------------------- .\"O .SH CONFORMING TO .\"O POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. .SH 準拠 POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .\"O ---------------------------------------- .\"O .SH NOTES .\"O A directory stream is opened using .\"O .BR opendir (3). .SH 注意 ディレクトリストリームは \fBopendir\fP(3) を使ってオープンする。 .\"O ---------------------------------------- .\"O .PP .\"O The order in which filenames are read by successive calls to .\"O .BR readdir () .\"O depends on the filesystem implementation; .\"O it is unlikely that the names will be sorted in any fashion. .PP 連続する \fBreaddir\fP() の呼び出しで読み込まれるファイル名の順序は、ファイルシステムの実装に依存する。名前が何らかの方法でソートされていることはありえない。 .\"O ---------------------------------------- .\"O .PP .\"O Only the fields .\"O .I d_name .\"O and (as an XSI extension) .\"O .I d_ino .\"O are specified in POSIX.1. .\"O Other than Linux, the .\"O .I d_type .\"O field is available mainly only on BSD systems. .\"O The remaining fields are available on many, but not all systems. .\"O Under glibc, .\"O programs can check for the availability of the fields not defined .\"O in POSIX.1 by testing whether the macros .\"O .BR _DIRENT_HAVE_D_NAMLEN , .\"O .BR _DIRENT_HAVE_D_RECLEN , .\"O .BR _DIRENT_HAVE_D_OFF , .\"O or .\"O .B _DIRENT_HAVE_D_TYPE .\"O are defined. .PP フィールド \fId_name\fP と (XSI 拡張の) \fId_ino\fP だけが POSIX.1 で規定されている。 \fId_type\fP フィールドは、 Linux 以外では、おもに BSD 系のシステムでのみ利用可能である。残りのフィールドは多くのシステムに存在するが、全てのシステムに存在するわけではない。 glibc では、プログラムが POSIX.1 で定義されていないフィールドが 利用できるかをチェックすることができる。 チェックするには、マクロ \fB_DIRENT_HAVE_D_NAMLEN\fP, \fB_DIRENT_HAVE_D_RECLEN\fP, \fB_DIRENT_HAVE_D_OFF\fP, \fB_DIRENT_HAVE_D_TYPE\fP が定義されているかをテストすればよい。 .\"O ---------------------------------------- .\"O .SS The d_name field .\"O The .\"O .I dirent .\"O structure definition shown above is taken from the glibc headers, .\"O and shows the .\"O .I d_name .\"O field with a fixed size. .SS "d_name フィールド" 上記の \fIdirent\fP 構造体の定義は glibc のヘッダーからの引用であり、 \fId_name\fP フィールドは固定サイズとなっている。 .\"O ---------------------------------------- .\"O .PP .\"O .IR Warning : .\"O applications should avoid any dependence on the size of the .\"O .I d_name .\"O field. .\"O POSIX defines it as .\"O .IR "char\ d_name[]", .\"O a character array of unspecified size, with at most .\"O .B NAME_MAX .\"O characters preceding the terminating null byte (\(aq\e0\(aq). .PP \fI警告\fP: アプリケーションは、 \fId_name\fP フィールドのサイズに依存すべきではない。 POSIX ではこのフィールドは \fIchar\ d_name[]\fP (サイズ不定の文字配列) として規定しており、最大で終端のヌルバイト (\(aq\e0\(aq) の前に \fBNAME_MAX\fP 文字が入る。 .\"O ---------------------------------------- .\"O .PP .\"O POSIX.1 explicitly notes that this field should not be used as an lvalue. .\"O The standard also notes that the use of .\"O .I sizeof(d_name) .\"O is incorrect; use .\"O .IR strlen(d_name) .\"O instead. .\"O (On some systems, this field is defined as .\"O .IR char\ d_name[1] !) .\"O By implication, the use .\"O .IR "sizeof(struct dirent)" .\"O to capture the size of the record including the size of .\"O .IR d_name .\"O is also incorrect. .PP POSIX.1 は、このフィールドを左辺値として使用すべきではないと明記している。また、 POSIX.1 では、 \fIsizeof(d_name)\fP の使用は間違いであり、代わりに \fIstrlen(d_name)\fP を使用するように、との注記もある (いくつかのシステムでは、このフィールドは \fIchar\ d_name[1]\fP! として定義されている)。このことは、 \fId_name\fP を含むレコードのサイズを取得するために \fIsizeof(struct dirent)\fP を使用することも間違いであることを暗に示している。 .\"O ---------------------------------------- .\"O .PP .\"O Note that while the call .PP 多くのファイルシステムでは、 .\"O ---------------------------------------- .\"O .PP .\"O fpathconf(fd, _PC_NAME_MAX) .PP fpathconf(fd, _PC_NAME_MAX) .\"O ---------------------------------------- .\"O .PP .\"O returns the value 255 for most filesystems, .\"O on some filesystems (e.g., CIFS, Windows SMB servers), .\"O the null-terminated filename that is (correctly) returned in .\"O .I d_name .\"O can actually exceed this size. .\"O In such cases, the .\"O .I d_reclen .\"O field will contain a value that exceeds the size of the glibc .\"O .I dirent .\"O structure shown above. .PP の呼び出しは値 255 を返すが、いくつかのファイルシステム (例えば CIFS や Windows SMB サーバーなど) では、(正しい動作なのだが) \fId_name\fP で返されるヌル終端されたファイル名は実際にはこのサイズを超える場合がある点に注意すること。このような場合、 \fId_reclen\fP フィールドは、上記の glibc \fIdirent\fP 構造体のサイズよりも大きな値となる。 .\"O ---------------------------------------- .\"O .SH SEE ALSO .\"O .BR getdents (2), .\"O .BR read (2), .\"O .BR closedir (3), .\"O .BR dirfd (3), .\"O .BR ftw (3), .\"O .BR offsetof (3), .\"O .BR opendir (3), .\"O .BR readdir_r (3), .\"O .BR rewinddir (3), .\"O .BR scandir (3), .\"O .BR seekdir (3), .\"O .BR telldir (3) .SH 関連項目 \fBgetdents\fP(2), \fBread\fP(2), \fBclosedir\fP(3), \fBdirfd\fP(3), \fBftw\fP(3), \fBoffsetof\fP(3), \fBopendir\fP(3), \fBreaddir_r\fP(3), \fBrewinddir\fP(3), \fBscandir\fP(3), \fBseekdir\fP(3), \fBtelldir\fP(3) .\"O ---------------------------------------- .\"O .SH COLOPHON .\"O This page is part of release 5.10 of the Linux .\"O .I man-pages .\"O project. .\"O A description of the project, .\"O information about reporting bugs, .\"O and the latest version of this page, .\"O can be found at .\"O \%https://www.kernel.org/doc/man\-pages/. .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。 .\"O ----------------------------------------