Напишите программу, осуществляющую выдачу информации об элементе каталога. Имя элемента программа получает из командной строки

Напишите программу, осуществляющую выдачу информации об элементе каталога. Имя элемента программа получает из командной строки.

Используемые библиотеки:

#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);}

Наши рекомендации