рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Переключение процесса на выполнение другой программы

Переключение процесса на выполнение другой программы - раздел Компьютеры, Процессы в ОС Linux (I) Семейство Функций Exec Содержит Набор Функций, Которые Перек...

Семейство функций exec содержит набор функций, которые переключают процесс на выполнение другой программы, т.е. изменяют образ процесса. При этом прекращается выполнение текущей программы и начинается выполнение в этом же процессе другой программы, начиная с ее точки входа. Функции семейства exec различаются набором аргументов:

· Функции, которые содержат в имени букву p (execvp и execlp), принимают имя программы и ищут программу по имени во всех путях, содержащихся в PATH; в функции, не содержащие в имени букву p, должно быть передано полное имя пути программы.

· Функции, которые содержат в имени букву v (execv, execvp и execve), принимают список параметров для новой программы как массив указателей на строки с последним нулевым элементом. Каждая строка соответствует одному параметру. В функции, содержащие в имени букву l (execl, execlp, execle), параметры передаются как параметры соответствующей функции exec.

· Функции, которые содержат в имени букву e (execve и execle), принимают дополнительный параметр - массив переменных окружения. Этот параметр должен быть массивом указателей на строки, с последним нулевым элементом. Каждая строка должна иметь вид "ПЕРЕМЕННАЯ=значение".

Т.к. exec заменяет вызывающую программу на другую, то exec никогда не возвращает управление в вызывающую программу в случае успеха. Таким образом, код, находящийся после exec, будет выполнен только в случае ошибки в вызове exec.

Список параметров, передаваемых в вызываемую программу, является аналогом параметров командной строки. Первым параметром (*argv[0]) в нем должно быть имя программы.

Один из вариантов запуска новых программ - в основной программе создать дочерний процесс (fork) и в нем переключиться на другую программу (exec), как в задании 5:

Задание 5.

5.1. Выполните программу pr5.c, которая в дочернем процессе вызывает программу ls с теми же параметрами, что и в задании 3. Определите, какой оператор(ы) никогда не выполняется в случае успешного выполнения exec.

/* pr5.c */

#include <stdio.h>

#include <unistd.h>

int main()

{

char* arg_list[] = {"ls", "-l", "/", NULL};

if (fork() == 0)

{

execvp("ls", arg_list);

printf("Return after execn");

}

return 0;

}

 

5.2. Модифицируйте программу: замените execvp на execlp:

execlp("ls", "ls", "-l", "/", NULL);

5.3. Сделайте ошибку в вызове exec: а) укажите вместо "ls" имя несуществующей программы; б) задайте несуществующий каталог для ls. Различаются ли при выполнении случаи а) и б) ?

5.4. Модифицируйте программу: загрузите в дочерний процесс (используйте execl) любую вашу программу (например, печатающую "Hello, world" из лабораторной работы 2.

 

– Конец работы –

Эта тема принадлежит разделу:

Процессы в ОС Linux (I)

На сайте allrefs.net читайте: "Процессы в ОС Linux"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Переключение процесса на выполнение другой программы

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Идентификаторы процессов
Процессы в ОС Linux имеют уникальные номера - идентификаторы процессов (PID), являющиеся целыми числами, назначаемыми процессам при их создания. В программах, написанных на С/С++, предпочтительнее

Просмотр активных процессов
Для просмотра активных процессов предназначены следующие команды: - ps (Process Status). Введенная без опций, команда ps показывает только те процессы, ко

Код завершения процесса
В нормальной ситуации процесс завершается либо системным вызовом exitлибо возвратом из функции main. Код завершения - это двухбайтное целое число, возвращаемое про

Создание процессов
Способ 1. Использование system. При помощи функции system из стандартной библиотеки языка С stdlib мож

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

Вопросы
1. Что такое процесс? 2. Какие команды предназначены для вывода списка активных процессов? 3. Каково назначение системных вызовов getpid, getppid

Источники информации
1. Митчел М., Оулдем Дж., Самьюэл А. Программирование для Linux. Профессиональный подход. - М.: Издательский дом "Вильямс", 2003. (Глава 3) (The original book (2001) is available at http:

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги