Системный вызов stat
Программирование для linux.
Если в консоли выполнить команду
ls-l, то мы увидим кроме всего прочего, информацию о файлах, такую как: права доступа, uid. gid, размер и т.п.
Для получения этой информации программно, нужно использовать вызов
stat.
Код:
stat(char *file,struct stat fbuf);
Первый аргумент это имя/путь файла. Второй - это структура stat.
В ней собственно и будет располагаться вся информация.
Некоторые поля структуры:
Код:
st_mode - тип, права доступа.
st_atime - время последнего доступа.
st_size - размер.
st_uid - юид юзера.
st_gid - идентификатор группы пользователей
При ошибке возвращает -1
Теперь давайте напишем пример - программа должна выводить размер указаного файла.
Код:
------------------------------------------------------
#include <stdio.h>
#include <sys/stat.h>// необходимый заголовочный файл
int main(int ac,char *ag[])
{
struct stat buffer; // структура для хранения инфы
if(ac!=1) если кол во аргументов не 1 то
printf("Пожалуйста введите необходимые аргументы\n");
if(stat(ag[1],&buffer)!=-1) //если не произошла ошибка то
printf("Размер файла: %d\n",buffer.st_size); //вывод
else
printf("Не корректное имя файла\n"); // если ошибка
}
---------------------------------------------------------------------------