Я пытаюсь получить статистику родительского каталога.
Если я напишу код, подобный приведенному ниже, он вернет error: Bad address
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <dirent.h>
int main(int agrc, char * argv[]){
struct stat *buffer;
int res = stat("..", buffer);
if(res != 0){
perror("error");
exit(1);
}
//printf("%d", buffer->st_ino);
}
Но если я напишу код, подобный приведенному ниже, проблем нет.
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <dirent.h>
int main(int agrc, char * argv[]){
/* struct stat *buffer; */
struct stat buffer;
int res = stat("..", &buffer);
if(res != 0){
perror("error");
exit(1);
}
//printf("%d", buffer->st_ino);
printf("%d", buffer.st_ino);
}
Iне знаю, почему результат отличается.
Переменная buffer
определения struct stat * buffer
является указателем struct stat
&buffer
также является указателем struct stat
Функция определена, как показано ниже в man-странице
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *pathname, struct stat *buf);
...
Я ожидал, что результат будет успешным, почему результат отличается?любой может помочь, большое спасибо.