Лінії видимого контуру - раздел Образование, Лекція 4 5 Створення процесу Породження Процесі, Як Подано В Лістінгу 6, Можливе За Допомогою Функцій, Як...
Породження процесі, як подано в лістінгу 6, можливе за допомогою функцій, які викликаються із функції mane ().
// Лістінг 6. Основна гілка програми, з якої викликається функція,
// що породжує процес
int main (int argc, char *argv [ ]) {
// . . .
Rt = func1 (X, Y, Z );
// . . . }
// Визначення функції.
int func1 (char *M, char *N, char *V) {
// . . .
char *const args [ ] = {“TaskX”, M, N, V, NULL};
Pid = fork ();
if (Pid = = 0) {
exec ({“TaskX”, args); }
if (Pid > 0) {
// . . . }
wait (&stat); }
В лістінгу 6. функція func1 викликається з трьома аргументами. Ці аргументи передаються породженому процесу.
Процеси також можуть породжуватися із методів, які належать об’єктам. Як подано в лістінгу 7, об’єкти можна оголосити в довільному процесі.
// Лістінг 7. Оголошення об’єкту в процесі
// . . .
my_object MyObject;
// . . .
// Оголошення та визначення класу.
class my_object {
public:
// . . .
int spawnProcess (int X);
// . . . };
int my_object :: spawnProcess (int X) {
// . . .
// . . . posix_spawn () або system ()
// . . . }
Як подано в лістінгу 7, об’єкт може створювати довільну кількість процесів з довільного методу.
Синопсис... pstree a c h frac Hpid l n p u G frac U... pid frac user...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:
Лінії видимого контуру
Что будем делать с полученным материалом:
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Відношення між батьківським та дочірніми процесами
Процес, який створює, або породжує, інший процес, є батьківським (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 < unistd.h >
long sysconf (int name);
Ще одним обмеженням при використанні функцій сімейства exec та інших функцій, які застосовуються для створення процесів, є ма
Синопсис
# 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 () за виключенням
Розбиття програми на задачі
Аналізуючи розбиття програми на декілька задач, ми робимо перший крок до реалізації паралелізму в свою програму. В одно процесорному середовищі паралелізм реалізується засобами багатозадачності. Ц
Висновки
Паралелізм в С++ програмі досягається за рахунок поділу на декілька процесів або декілька потоків. Процес – це ²одиниця роботи², що реалізується операційною системою. Якщо програма – це а
Хотите получать на электронную почту самые свежие новости?
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Новости и инфо для студентов