Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО STUDENT_v2_Мовчан.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
95.66 Кб
Скачать
  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];

switch (s.st_mode & S_IFMT)

{ case S_IFREG: sprintf(str," Обычный файл "); break;

case S_IFDIR: sprintf(str,"Каталог"); break;

default: sprintf(str,"???"); break;}

fprintf(stdout," Тип: %s\n",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 1.c

________________________________

student@loony ~/new $ ./prog p1

________________________________

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

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

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

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

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

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

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

Листинг:

#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];

switch (s.st_mode & S_IFMT)

{ case S_IFREG: sprintf(str," Обычный файл "); break;

default: sprintf(str,"???"); break;}

fprintf(stdout," Тип: %s\n",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 1.c

________________________________

student@loony ~/new $ ./prog p1

________________________________

  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\n",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 p1

________________________________

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

________________________________