Напишите программу, осуществляющую выдачу информации об элементе каталога. Имя элемента программа получает из командной строки.
Используемые библиотеки:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
Используемые функции:
int stat(const char *filename, struct stat *buf); - следует по символьным ссылкам
Поле: st_mode /* тип и защита, закодированы в одном поле*/
Используемые макросы:
S_IFMT 0170000 маска для всех битовых полей типа файла
S_IFREG 0100000 обычный файл
S_IFDIR 0040000 каталог
student@loony ~/new $ ls -lF
-rwx------ 3 student student 187 2012-12-23 17:20 1.c*
drwxrwxr-x 2 student student 4096 2012-12-23 16:48 p1/
-rwxrwxr-x 1 student student 8623 2012-12-23 20:29 prog*
lrwxrwxrwx 1 student student 2 2012-12-23 17:22 s1 -> p1/
lrwxrwxrwx 1 student student 3 2012-12-23 17:24 s3 -> 1.c*
student@loony ~/new $./prog s1
Тип файла s1: Каталог
student@loony ~/new $./prog s3
Тип файла s3: Обычный файл
Ответ:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{struct stat s; stat(argv[1], &s);
int q; static char str[22];
q=s.st_mode & S_IFMT;
switch (q)
{ case S_IFREG: sprintf(str," Обычный файл "); break;
case S_IFDIR: sprintf(str,"Каталог"); break;
default: sprintf(str,"???"); break;}
fprintf(stdout," Тип файла %s: %s\n",argv[1],str);}
Напишите программу, осуществляющую выдачу информации об элементе каталога. Имя элемента программа получает из командной строки.
Используемые библиотеки:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
Используемые функции:
int stat(const char *filename, struct stat *buf); - следует по символьным ссылкам
Поле: st_mode /* тип и защита, закодированы в одном поле*/
Используемые макросы:
S_IFMT 0170000 маска для всех битовых полей типа файла
S_IFDIR 0040000 каталог
student@loony ~/new $ ls -lF
-rwx------ 3 student student 187 2012-12-23 17:20 1.c*
drwxrwxr-x 2 student student 4096 2012-12-23 16:48 p1/
-rwxrwxr-x 1 student student 8623 2012-12-23 20:29 prog*
lrwxrwxrwx 1 student student 2 2012-12-23 17:22 s1 -> p1/
lrwxrwxrwx 1 student student 3 2012-12-23 17:24 s3 -> 1.c*
student@loony ~/new $./prog s1
Тип файла s1: Каталог
student@loony ~/new $./prog 1.с
Тип файла 1.с:???
Ответ:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{struct stat s; stat(argv[1], &s);
int q; static char str[22];
q=s.st_mode & S_IFMT;
switch (q)
{case S_IFDIR: sprintf(str,"Каталог"); break;
default: sprintf(str,"???"); break;}
fprintf(stdout," Тип файла %s: %s\n",argv[1],str);}
Напишите программу, осуществляющую выдачу информации об элементе каталога. Имя элемента программа получает из командной строки.
Используемые библиотеки:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
Используемые функции:
int lstat(const char *filename, struct stat *buf); -не следует по символьным ссылкам
Поле: st_mode /* тип и защита, закодированы в одном поле*/
Используемые макросы:
S_IFMT 0170000 маска для всех битовых полей типа файла
S_IFLNK 0120000 символическая ссылка
S_IFREG 0100000 обычный файл
S_IFDIR 0040000 каталог
student@loony ~/new $ ls -lF
-rwx------ 3 student student 187 2012-12-23 17:20 1.c*
drwxrwxr-x 2 student student 4096 2012-12-23 16:48 p1/
-rwxrwxr-x 1 student student 8623 2012-12-23 20:29 prog*
lrwxrwxrwx 1 student student 2 2012-12-23 17:22 s1 -> p1/
lrwxrwxrwx 1 student student 3 2012-12-23 17:24 s3 -> 1.c*
student@loony ~/new $./prog s1
Тип файла s1: Cимволическая ссылка
student@loony ~/new $./prog p1
Тип файла p1: Каталог
student@loony ~/new $./prog 1.c
Тип файла 1.с: Обычный файл
Ответ:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{ struct stat lst; lstat(argv[1], &lst);
int q; static char str[22];
switch (lst.st_mode & S_IFMT)
{case S_IFLNK: sprintf(str,"Cимволическая ссылка"); break;
case S_IFREG: sprintf(str," Обычный файл "); break;
case S_IFDIR: sprintf(str,"Каталог"); break;
default: sprintf(str,"???"); break;}
fprintf(stdout," Тип файла %s: %s\n",argv[1],str);}
Напишите программу, осуществляющую выдачу информации об элементе каталога. Имя элемента программа получает из командной строки.
Используемые библиотеки:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
Используемые функции:
int lstat(const char *filename, struct stat *buf); -не следует по символьным ссылкам
Поле: st_mode /* тип и защита, закодированы в одном поле*/
Используемые макросы:
S_IFMT 0170000 маска для всех битовых полей типа файла
S_IFLNK 0120000 символическая ссылка
student@loony ~/new $ ls -lF
-rwx------ 3 student student 187 2012-12-23 17:20 1.c*
drwxrwxr-x 2 student student 4096 2012-12-23 16:48 p1/
-rwxrwxr-x 1 student student 8623 2012-12-23 20:29 prog*
lrwxrwxrwx 1 student student 2 2012-12-23 17:22 s1 -> p1/
lrwxrwxrwx 1 student student 3 2012-12-23 17:24 s3 -> 1.c*
student@loony ~/new $./prog s1
Тип файла s1: Cимволическая ссылка
student@loony ~/new $./prog 1.с
Тип файла 1.с:???
student@loony ~/new $./prog p1
Тип файла p1:???
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{ struct stat lst; lstat(argv[1], &lst);
int q; static char str[22];
switch (lst.st_mode & S_IFMT)
{case S_IFLNK: sprintf(str,"Cимволическая ссылка"); break;
default: sprintf(str,"???"); break;}
fprintf(stdout," Тип файла %s: %s\n",argv[1],str);}