我在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;
}
答案 0 :(得分:1)
int stat(const char *restrict path, struct stat *restrict buf);
stat()
函数应获取有关指定文件的信息,并将其写入buf参数指向的区域。 path参数指向命名文件的路径名。
在您的代码中stat("/", st);
是仅限目录的路径。
答案 1 :(得分: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;
}
以上将帮助您。供参考
man 2 stat