Синопсис - раздел Образование, Лекція 4 5 Створення процесу # Include < Unistd.h >
Long Sysconf (Int Name);
Ще Од...
# include < unistd.h >
long sysconf (int name);
Ще одним обмеженням при використанні функцій сімейства exec та інших функцій, які застосовуються для створення процесів, є максимальна кількість процесів, що виконуються одночасно, яке доступне для одного користувача. Щоб функція sysconf () повернула дане число, її параметру name необхідно передати значення _SC_CHILD_MAX.
2.6. Читання та встановлення змінних середовища
Змінні середовища, це стрічки з нульовими символами в кінці, в яких зберігається наступна системна інформація: шляхи до каталогів, які містять команди, бібліотеки, функції і процедури які використовує процес. Їх можна також використовувати для передачі довільних визначених користувачем даних між батьківським і дочірнім процесами. Вони забезпечують механізм надання процесу спеціальної інформації без необхідності жорсткої її сполучення з кодом програми. Змінні середовища визначені системою і спільно використовуються всіма її оболонками та процесами. Ці змінні ініціюються файлами запуску. Частіше всього використовуються наступні системні змінні.
$HOME
Повне складене ім'я користувача
$PATH
Список каталогів для файлів, що виконуються при виконанні команд
$MAIL
Повне складене ім'я поштового ящика користувача
$USER
Ідентифікатор (id) користувача
$SHELL
Повне складене ім'я командної оболонки зареєстрованого користувача
$TERM
Тип терміналу користувача
Змінні середовища можуть зберігатися у файлі або у списку, які належать середовищу. Даний список середовища містить вказівники на стрічки з нульовими символами в кінці. Коли процес починає виконання, змінна
extern char **environ
буде вказувати на список середовища. Стрічки які складають список середовища, мають наступний формат:
name = value
Процеси ініційовані за допомогою функцій execl (),execlp (),execv () і execvp (), успадковують конфігурацію середовища батьківського процесу. Процеси, ініційовані за допомогою функцій execve () і execle (), самі встановлюють середовище.
Існують функції та утиліти, які дозволяють опитати, добавити або модифікувати змінні середовища. Функція getevn ()використовується для визначення факту встановлення заданої змінної. Змінна, яка вас цікавить задається за допомогою параметру name. Якщо задана змінна не встановлена, функція повертає значення NULL. В інакшому випадку (якщо змінна встановлена), функція повертає вказівник на стрічку, яка містить її значення.
Відношення між батьківським та дочірніми процесами
Процес, який створює, або породжує, інший процес, є батьківським (parent) процесом по відношенню до породженого, або дочірнього (child) процесу. Процес init – батьківський (або предок) всіх
Використання системних функцій
2.1. Системна функція fork ()
Системна функція (або системний виклик) fork () створює новий процес, який є дублікатом процесу який його викликав, тобто його батька. При успішному виконанн
Синопсис
# include <unistd>
pid_t fork (void);
Невдале виконання функції fork () можливе у випадку, коли система не володіє ресурсами для створення ще одного процесу. Це відбувається
Синопсис
# include <unistd.h
int execl (const char *path, const char *arg0, . . ./*, (char *)0 */);
int execle (const char *path, const char *arg0, . . ./*, (char *)0 *, char * const en
Синопсис
# include < stdlib.h >
int system (const char *string);
В якості параметру string можемо передати системну команду або ім'я файлу, який виконується. При вдалому виконанні фу
Використання POSIX-функцій для породження процесів
Подібно створенню процесів за допомогою функцій system () і fork- exec, функцій posix_spawn () створюють нові дочірні процеси із заданих образів процесів. Однак функції posix_spawn () дозволяють п
Завершення процесу
Коли процес завершується, його блок БУП руйнується, а адресний простір, який він займав і ресурси звільняються. Код завершення розміщується в головну таблицю процесів. Як тільки батьківський проце
Синопсис
# include < stdlib.h >
void exit (int status);
void abort (void);
Функцію kill () можемо використати для примусового завершення іншого процесу. Дана функція відпра
Ресурси процесу
При виконанні призначених на процес задач часто приходиться записувати дані у файл, відправляти їх на принтер або відображати отримані результати на екран. Процесу можуть знадобитися дані, що вво
Синопсис
# include < sys/resource.h >
int setrlimit (int resource, const struct rlimit *rlp);
int getrlimit (int resource, struct rlimit *rlp);
int getrusage (int who, struc
Синопсис
# include < sys/wait/h >
pid_t wait (int *status);
pid_t waitpid (pid_t pid, int *status, int oрtions);
Функція waitpid () аналогічна функції wait () за виключенням
Розбиття програми на задачі
Аналізуючи розбиття програми на декілька задач, ми робимо перший крок до реалізації паралелізму в свою програму. В одно процесорному середовищі паралелізм реалізується засобами багатозадачності. Ц
Лінії видимого контуру
Породження процесі, як подано в лістінгу 6, можливе за допомогою функцій, які викликаються із функції mane ().
// Лістінг 6. Основна гілка програми, з якої викликається функція,
Висновки
Паралелізм в С++ програмі досягається за рахунок поділу на декілька процесів або декілька потоків. Процес – це ²одиниця роботи², що реалізується операційною системою. Якщо програма – це а
Хотите получать на электронную почту самые свежие новости?
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Новости и инфо для студентов