-1

我在 C 中有以下代码。我在 FreeBSD 上运行它。我将其编译为cc -o bbb bb.c. 然后运行并获取输出

$ ./bbb
-1    
stat: No such file or directory

这是代码:

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


int main() {
    struct stat *st;
    int stat_code =0;
    stat_code = stat("/", st);
    printf("%d\n", stat_code);
    perror("stat");
    return 0;
}
4

2 回答 2

1

int stat(const char *restrict path, struct stat *restrict buf);

stat()函数应获取有关命名文件的信息并将其写入 buf 参数指向的区域。path 参数指向命名文件的路径名。

在您的代码stat("/", st);中仅是目录的路径。

于 2013-09-23T07:04:26.800 回答
0

这是man 2 stat中 stat() 的函数原型

int stat(const char *path, struct stat *buf);

您的代码将出现分段错误,因为结构变量的地址需要传入 stat() 函数。

代码:

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

   int main() {
        struct stat st;
        int stat_code =0;
        stat_code = stat("test.txt", &st);
        printf("%d\n", stat_code);
        perror("stat");
        return 0;
    }

以上会帮助你。以供参考

男人 2 统计

于 2013-09-23T07:04:10.810 回答