我写了这个程序来打开一个文件.一切都很好,直到我看到这个权限(-wS-wx-T)ls -lh
open.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#define FILE "foo.txt"
int main()
{
int fd;
int errnum;
fd = open(FILE, O_RDWR | O_CREAT);
if(fd == -1)
{
printf("[error] The file hasn't opened.\n");
perror("Error printed by perror");
}else {
printf("The process was succeeded\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我很好地编译了程序,没有收到任何错误或警告.
$ ./open
The process was succeeded
$ ls -lh
-rwxrwxr-x 1 hemre hemre 8.5K Feb 1 23:38 open
--wS-wx--T 1 hemre hemre 0 Feb …
Run Code Online (Sandbox Code Playgroud) 我从Gnu C 库 [dirent.h]中找到了 'struct dirent' 的结构成员(名称为 d_fileno)
。
我阅读了文档,但不明白文件序列号的含义。我在谷歌上找不到任何满意的答案。
因此,我决定编写一个程序来查看文件序列号。
输出
$./fileno ..
file_serial_number file_name
[6838726] [source]
[6562883] [..]
[6838661] [lstfl]
[6838718] [.]
[6826161] [research]
[6838720] [starcase]
Run Code Online (Sandbox Code Playgroud)
那么,这些数字的含义是什么?
程序的相关部分:
...
while((pDirent = readdir(pDir)) != NULL)
{
printf("[%li]\t\t [%s]\n",pDirent->d_fileno, pDirent->d_name);
}
closedir(pDir);
...
Run Code Online (Sandbox Code Playgroud)