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

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

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

#include <time.h>

Используемые функции:

Int stat( const char *filename, struct stat *buf); - следует по символьным ссылкам

ctime(time_t *datetime) - преобразует time_t в string

Поле: st_mtime /* время последнего изменения*/

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 1.c

Время последнего изменения Sun Dec 23 17:20:05 2012

Ответ:

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

#include <stdio.h>

#include <time.h>

int main(int argc, char **argv)

{struct stat s;

stat(argv[1], &s);

fprintf(stdout,"Время последнего изменения %s\n",ctime(&s.st_mtime));}

  1. Какой будет результат после выполнения программы prog. Приведен ниже:

Используемые функции:

Int stat( const char *filename, struct stat *buf); - следует по символьным ссылкам

Поле: st_mode /* тип и защита, закодированы в одном поле*/

Используемые макросы:

S_IFMT 0170000 маска для всех битовых полей типа файла

S_IFREG 0100000 обычный файл

S_IFDIR 0040000 каталог

Листинг:

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

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

_________________________________

student@loony ~/new $ ./prog s3

_________________________________

  1. Какой будет результат после выполнения программы prog. Приведен ниже:

Используемые функции:

Int stat( const char *filename, struct stat *buf); - следует по символьным ссылкам

Поле: st_mode /* тип и защита, закодированы в одном поле*/

Используемые макросы:

S_IFMT 0170000 маска для всех битовых полей типа файла

S_IFDIR 0040000 каталог

Листинг:

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

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

_________________________________

student@loony ~/new $ ./prog 1.с

_________________________________