Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по системному программированию.doc
Скачиваний:
82
Добавлен:
20.06.2014
Размер:
318.46 Кб
Скачать

Завершение процесса. Функция exit() Прототип функции

#include <stdlib.h>

void exit(int status);

Описание функции

Функция exit служит для нормального завершения процесса. При выполнении этой функции происходит сброс всех частично заполненных буферов ввода-вывода с закрытием соответствующих потоков (файлов, pipe, FIFO, сокетов), после чего инициируется системный вызов прекращения работы процесса и перевода его в состояние «закончил исполнение».

Возврата из функции в текущий процесс не происходит, и функция ничего не возвращает.

Значение параметра status  кода завершения процесса  передается ядру операционной системы и может быть затем получено процессом, породившим завершившийся процесс. Для кода завершения допустимы значения от 0 до 255. По соглашению, код завершения 0 означает безошибочное завершение процесса.

Параметры функции main() в языке с Переменные среды и аргументы командной строки

У функции main() в языке программирования С существует три параметра, которые могут быть переданы ей операционной системой. Полный прототип функции main() выглядит следующим образом:

int main(int argc, char *argv[], char *envp[]);

Первые два параметра при запуске программы на исполнение командной строкой позволяют узнать полное содержание командной строки. Вся командная строка рассматривается как набор слов, разделенных пробелами. Через параметр argc передается количество слов в командной строке, которой была запущена программа. Параметр argv является массивом указателей на отдельные слова. Третий параметр  envp  является массивом указателей на параметры окружающей среды процесса.

Задание 3.

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

Прототипы функции

#include <unistd.h>

int execlp(const char *file, const char *arg0,

... const char *argN, (char *)NULL)

int execvp(const char *file, char *argv[]),

int execl(const char *path, const char *arg0

... const char *argN, (char *)NULL)

int execv(const char *path, char *argv[])

int execle(const char *path, char *arg0,

... const char *argN, (char *)NULL, char *envp[])

int execve(const char *path, char *argv[],char *envp[])

Описание функций

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

Аргумент file является указателем на имя файла, который должен быть загружен. Аргумент path  это указатель на полный путь к файлу, который должен быть загружен.

Аргументы arg0 и argN представляют собой указатели на аргументы командной строки. Заметим, что аргумент arg0 должен указывать на имя загружаемого файла. Аргумент argv представляет собой массив из указателей на аргументы командной строки. Начальный элемент массива должен указывать на имя загружаемой программы, а заканчиваться массив должен элементом, содержащим указатель NULL.