Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Понятие создания процесса




Выполнение Команды

Лабораторная работа №2

“Создание процесса с использование вызова fork()”

Процессы – элементарная единица работы в операционной системе. Каждый процесс имеет собственное адресное пространство. Процесс выполняет программу. Можно запустить множество процессов, выполняющих одну и ту же программу, но каждый процесс имеет собственную копию программы внутри собственного адресного пространства и выполняет ее независимо от других копий.

Процессы организованы иерархически. Каждый процесс имеет родительский процесс. Процессы, созданные данным родителем, называются дочерними процессами. Дочерний процесс наследует многие из атрибутов родительского процесса.

Существуют три операции: создание нового дочернего процесса, назначение новому процессу выполняемой программы, и координирование завершения дочернего процесса.

Функции системы обеспечивают простой механизм для выполнения программ и операционная система делает все три шага автоматически. Если необходим больший контроль, можно использовать примитивные функции, чтобы делать каждый шаг индивидуально.

Простой способ выполнить программу состоит в том, чтобы использовать функцию system. Эта функция запускает на выполнение программу, но не предоставляет возможность контролировать события – выполнение родительского процесса приостанавливается.

int system (const char *command)

Эта функция выполняет command как команду оболочки. В библиотеке GNU C, она всегда использует заданную по умолчанию оболочку sh, чтобы выполнить команду. Функция использует каталоги из переменной среды PATH, чтобы найти программу для выполнения. Возвращаемое значение -1, если не возможно создать процесс оболочки, иначе - состояние процесса оболочки.

Функция system объявлена в файле " stdlib.h ".

Некоторые реализации C могут не иметь понятие командного процессора, который может выполнять другие программы. Определить, существует ли командный процессор, можно выполняя system (NULL); если возвращаемое значение отлично от нуля, командный процессор доступен.

Popen и pclose функции близко связаны с функцией system. Они позволяют родительскому процессу связываться со стандартным вводом и выводом выполняемой команды.

Этот раздел дает краткий обзор действий по созданию процесса и выполнению им другой программы.

Каждый процесс ассоциирован с идентификатором (ID) процесса. Уникальный ID процесса задается каждому процессу при создании.

Процессы создаются системным вызовом fork. Дочерний процесс, созданный fork – точная копия первоначального родительского процесса, за исключением того, что он имеет собственный ID.

Если необходимо, чтобы программа ждала завершения дочернего процесса, нужно делать это явно после операции fork, вызовом wait или waitpid. Эти функции дают ограниченную информацию относительно того, почему завершился дочерний процесс - например, возвращая код состояния exit.

Дочерний процесс продолжает выполнять ту же самую программу как родительский процесс, начиная с той точки в программе, которая следует за вызовом fork. Используя возвращаемое значение fork, можно различить, выполняется ли программа в родительском процессе или в дочернем.

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




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 419; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.