Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО STUDENT_v2_Мовчан.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
95.66 Кб
Скачать
  1. Напишите программу, осуществляющую выдачу информации об элементе каталога. Имя элемента программа получает из командной строки.

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

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

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

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

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

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

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

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