Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PR_СП_лабы_11.doc
Скачиваний:
7
Добавлен:
22.04.2019
Размер:
755.71 Кб
Скачать

5. Індівідуальні завдання

  1. Написати програму, яка виводить дату і час останньої зміни файлу. Ім'я файлу задавати у вигляді аргументу командного рядка. Перевіряти, чи не виникають помилки при системних викликах.

  2. Написати функцію, що додає право на читання файлу всім категоріям користувачів. Аргументом є колійне ім'я файлу. Функція повертає значення 0, якщо операція вдалася, і -1 в іншому випадку

  3. Написати функцію, що визначає власника файлу. Аргументом функції є колійне ім'я файлу. Функція повертає ідентифікатор власника, у випадку успіху і -1 в іншому випадку.

  4. Написати програму, що додає право читання файлу всім категоріям користувачів для декількох файлів. Імена файлів задавати у вигляді аргументів командного рядка. Перевіряти, чи не виникають помилки при системних викликах.

  5. Написати функцію, що визначає, чи є право читати користувачеві заданий файл? Аргументом є колійне ім'я файлу. Функция возвращает значение 0, если такое право есть, и -1 в противном случае.

  6. Написать функцию, определяющую, установлен ли бит смены идентификатора пользователя (S_ISUID) ? Аргументом является путевое имя файла. Функция возвращает значение 0, если это так, и -1 в противном случае.

  7. Написать функцию, определяющую, является ли заданный файл символической ссылкой? Аргументом является путевое имя файла. Функция возвращает значение 0, если является, и -1 в противном случае.

  8. Написать функцию, возвращающую длину файла. Аргументом функции является файловый дескриптор.

  9. Открыть файл, указанный в командной строке, и выдать на экран параметры доступа к открытому файлу. Написать функцию, принимающую на входе файловый дескриптор и снимающую флаг, дающий право на запись в соответствующий файл, если он установлен. Проверить действие этого флага до и после снятия, вывести отчет на экран.

  10. Определить, будет ли создаваться файл, указанный в командной строке, при программном обращении к нему. Вывести результат проверки на экран.

  11. Написать функцию, принимающую на входе файловый дескриптор и определяющую, как при записи будут помещаться данные в соответствующий файл: в конец либо в начало. Выдать результаты проверки на экран.

  12. Написать функцию, принимающую на входе файловый дескриптор и снимающую флаг O_NONBLOCK для соответствующего файла. Проверить действие этого флага до и после снятия, вывести результаты проверки на экран.

Лабораторна робота №8. Керування процесами

Мета: Оволодіння технологією використання API для роботи із процесами ОС UNIX. Застосування отриманих знань для написання програм керування процесами.

Завдання для самостійної підготовки:

Вивчити:

  • організацію процесів ОС UNIX;

  • основні атрибути процесів ОС UNIX;

  • засоби міжпроцесної взаємодії;

  • системні виклики керування процесами ОС UNIX;

Методичні вказівки

1. Загальні поняття

Процес - це фундаментальне поняття ОС Unix. Під процесом розуміється програма під час її виконання. Процес є єдиною активною сутністю в системі Unix. Процес - унікальним образом идентифицируемая програма, що має потребу в одержанні доступу до ресурсів комп'ютера.

Процес в UNIX має ряд атрибутів, що дозволяють операційній системі управляти його роботою. Основні атрибути:

  1. Ідентифікатор процесу (PID).

  2. Ідентифікатор батьківського процесу (PPID).

  3. Поточний пріоритет PRI.

  4. Виправлення пріоритету (NICE) - відносний пріоритет.

  5. Термінальна лінія (TTY).

  6. Реальний (UID) і ефективний (EUID) ідентифікатори користувача.

  7. Реальний (GID) і ефективний (EGID) ідентифікатори групи.

Unix надає ряд системних викликів, за допомогою яких можна довідатися реальні й діючі ідентифікатори користувача й групи:

getuid - повертає реальний ідентифікатор користувача

#include <unistd.h>

uid_t getuid(void);

Повертає ідентифікатор користувача (коди помилок не передбачені)

#include <unistd.h>

uid_t geteuid(void);

Повертає ідентифікатор користувача (коди помилок не передбачені

getgid - повертає реальний ідентифікатор групи

#include <unistd.h>

gid_t getgid(void);

Повертає ідентифікатор групи (коди помилок не передбачені)

getegid - повертає діючий ідентифікатор групи

#include <unistd.h>

gid_t getegid(void);

Повертає ідентифікатор групи (коди помилок не передбачені)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]