标签: stat

如何判断文件是否是链接?

我有下面的代码,这里只显示了它的一部分,我正在检查文件的类型.

struct stat *buf /* just to show the type buf is*/ 

switch (buf.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;
}
Run Code Online (Sandbox Code Playgroud)

问题:st_mode当我做printf("\nMode: %d\n",buf.st_mode);结果时获得的值是33188.

我用常规文件类型和符号链接测试了我的程序.在这两种情况下,输出都是"常规文件",即符号链接情况失败,我不明白为什么?

c linux symlink system-calls stat

12
推荐指数
1
解决办法
1万
查看次数

为文件获取纳秒精确的atime,mtime,ctime字段(stat?)

一些文件系统(例如ext4和JFS)提供纳秒级的atime/mtime字段分辨率.如何读取ns分辨率字段?该stat系统调用返回time_t其为第二分辨率.

linux filesystems stat linux-kernel

12
推荐指数
1
解决办法
4097
查看次数

Git log - 分支的stat摘要

我想展示我在功能分支上进行了多少更改(插入+删除).有没有办法获得git log --stat2次提交(分支根/提示)之间的更改的输出摘要.

谢谢.

git statistics logging branch stat

12
推荐指数
2
解决办法
8571
查看次数

如何使用S_ISREG()和S_ISDIR()POSIX宏?

这是我写的一个C程序,用于递归导航和输出目录和常规文件.它在我的Linux机器上编译并运行良好.但是在Solaris上,dit->d_type == 8检查和其他类似检查不起作用,因为没有d_type字段.我已经阅读过这个问题的答案是使用S_ISREG()S_ISDIR()宏,但它们并不能完全按照我目前的代码中的方式工作.我注释掉了在我的Linux机器上运行的行.

#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <dirent.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

void helper(DIR *, struct dirent *, struct stat, char *, int, char **);
void dircheck(DIR *, struct dirent *, struct stat, char *, int, char **);

int main(int argc, char *argv[]){

  DIR *dip;
  struct dirent *dit;
  struct stat statbuf;
  char currentPath[FILENAME_MAX];
  int depth = 0; /*Used to correctly space output*/

  /*Open Current Directory*/ …
Run Code Online (Sandbox Code Playgroud)

c solaris stat readdir

11
推荐指数
2
解决办法
9万
查看次数

使用stat来检查文件在C中是否可执行

对于家庭作业,我必须编写一个C程序,它必须做的一件事就是检查文件是否存在以及它是否可由所有者执行.

使用(stat(path[j], &sb) >= 0我能够查看路径[j]指示的文件是否存在.

我查看了man page,stackoverflow上的很多问题和答案,以及几个网站,但我无法完全理解如何使用stat检查文件是否可执行.我认为它会很简单,((stat(path[j], &sb) >= 0) && (sb.st_mode > 0) && (S_IEXEC)但据我测试它,它似乎忽略了这些文件不可执行的事实.

我认为也许统计数据不像我认为的那样有效.假设我使用stat,我该怎么办呢?

c stat

11
推荐指数
1
解决办法
2万
查看次数

在Linux上,access()比stat()更快吗?

我会假设access()只是stat()的一个包装,但我一直在谷歌上搜索并找到一些关于用"更便宜"的访问调用替换stat调用的轶事.假设您只对检查文件是否存在感兴趣,访问速度更快吗?文件系统完全不同吗?

linux performance posix file stat

11
推荐指数
1
解决办法
3108
查看次数

c和LD_PRELOAD.拦截open和open64调用,但不是stat64

我做了一个小的共享库,试图拦截open,open64,stat和stat64 sys调用.当我导出LD_PRELOAD并运行oracle的sqlplus时,我可以看到open和open64调用的痕迹,但没有stat和stat64调用的痕迹.共享库是一个单独的c文件,其中包含sys调用的所有定义.为什么有些系统调用被截获而其他系统没有被截获?谢谢你的帮助.

c system-calls stat preload interception

10
推荐指数
1
解决办法
2888
查看次数

R圆指数

我只想尝试在R数中舍入:

> 1.327076e-09
Run Code Online (Sandbox Code Playgroud)

它应该导致

> 1.32e-09
Run Code Online (Sandbox Code Playgroud)

哪个功能可以使用?

r rounding stat

10
推荐指数
2
解决办法
3740
查看次数

filesize():特定路径的stat失败 - php

我正在编写一个简单的文档管理脚本,需要获取文件大小和文件类型/文件或文件夹/在表中.不知怎的,它不会提到提到目录.请尽可能帮助:

    <?php
$path = "./documents";
$dh = dir($path);
while( ($file=$dh->read()) ) 
{
    if( $file=="." || $file=="..")continue;
    echo "<tr><td><a href='download.php?f=$file' title='Click to Open/Download'>$file</a></td>";
    echo "<td>";
    echo (is_file($file))? "<img src='file.jpg'/> FILE" : "<img src='folder.jpg'/> FOLDER ";
    echo "</td><td>" .filesize($file)."</td>";
    echo "<td><input type='checkbox' name='delete[]'/></td></tr>";
}
?>
Run Code Online (Sandbox Code Playgroud)

它确实有2个错误 - 一个文件大小不适用于该位置,如果我将其更改为路径"." - 一切都很好,但如果我尝试更改到我需要它/文件的文件夹...一切都很糟糕,其次 - 它也没有采取正确的图标文件,相同类型的问题.谢谢

php filesize stat

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

为什么`struct stat`中的字段名为st_something?

这是关于文件inode的信息的结构:

 dev_t       st_dev;     /* ID of device containing file */
 ino_t       st_ino;     /* inode number */
 mode_t      st_mode;    /* protection */
 nlink_t     st_nlink;   /* number of hard links */
 uid_t       st_uid;     /* user ID of owner */
 gid_t       st_gid;     /* group ID of owner */
 dev_t       st_rdev;    /* device ID (if special file) */
 off_t       st_size;    /* total size, in bytes */
 time_t      st_atime;   /* time of last access */
 time_t      st_mtime;   /* time of last modification */ …
Run Code Online (Sandbox Code Playgroud)

c struct stat

9
推荐指数
2
解决办法
659
查看次数