小编met*_*ose的帖子

C语言中带有open()函数的文件权限的意外结果(-wS-wx-T)

我写了这个程序来打开一个文件.一切都很好,直到我看到这个权限(-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)

c unix linux

3
推荐指数
1
解决办法
118
查看次数

文件序列号是什么?

我从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)

c gnu

3
推荐指数
1
解决办法
3609
查看次数

标签 统计

c ×2

gnu ×1

linux ×1

unix ×1