私のプログラムstat()
が特定の UTF-8 文字を含むファイルにアクセスしようとすると、stat()
関数はエラーを返します。たとえば、/tmp/surgateDlpMgQure/Özkul Gazete
vi でファイルを開くことはできますが、この同じファイルを に渡すとstat()
エラーが発生します。システム ロケール設定は次のとおりです。
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_COLLATE=C
LC_TIME="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
stat()
UTF-8 文字を理解するために何かをする必要がありますか?
コードは次のとおりです。
int main ()
{
struct stat s;
if (stat("/tmp/surgateDlpMgQure/Özkul Gazete", &s) == -1)
perror("stat");
switch (s.st_mode & S_IFMT) {
case S_IFBLK: printf("block device\n"); break;
case S_IFCHR: printf("character device\n"); break;
case S_IFDIR: printf("directory\n"); break;
case S_IFIFO: printf("FIFO/pipe\n"); break;
case S_IFLNK: printf("symlink\n"); break;
case S_IFREG: printf("regular file\n"); break;
case S_IFSOCK: printf("socket\n"); break;
default: printf("unknown?\n"); break;
}
return 0;
}