выполнить порождаемый процесс, используя переменную PATH, заданное окружение и массив аргументов | |
system | выполнение команды MS-DOS |
Система программирования MSC предоставляет дополнительно функции:
Функция | Краткое описание |
getpid | получить номер процесса |
onexit | выполнить функцию при завершении программы |
Термин 'процесс' относится к программе, которая выполняется под управлением операционной системы. Процесс состоит из кодов программы и данных, а также информации о состоянии процесса, такой, как число открытых файлов. Где бы ни выполнялась программа на уровне MS-DOS, запускается процесс. Можно запустить, остановить и управлять процессом из программы, используя функции управления процессом. Прототипы всех функций управления процессами объявлены в файле process.h (исключая функцию signal). Прототип функции signal содержится в файле signal.h. Функции управления процессом позволяют следующее:
1) Узнать уникальный номер процесса (getpid).
2) Завершить процесс (abort, exit, _exit).
3) Управлять сигналами прерывания (signal).
4) Начать новый процесс (разновидности ехес и spawn функции, system функция).
Функции abort и _exit осуществляют немедленное завершение без скидывания буферов потоков, функция exit осуществляет выход после скидывания буферов потоков. Функция system вызывает на выполнение заданную команду MS-DOS. Функции ехес и spawn создают новый процесс, называемый порождаемым процессом. Разница между функциями ехес и spawn в том, что spawn способна возвращать управление из порождаемого процесса к его родителю. Оба, и родитель, и порождаемый процесс, размещаются в памяти (если не указан флаг P_OVERLAY).
В функции ехес порождаемый процесс перекрывает порождающий процесс, так что возврат управления в родительский процесс невозможен (если не произошла ошибка во время попытки запуска на выполнение порождаемого процесса).
В таблице описывается способ формирования ехес и spawn. Имя функции задается в первом поле. Второе поле определяет: используется ли переменная PATH для поиска файла для выполнения, который определяет порождаемый процесс.
Третье поле описывает метод передачи аргументов порождаемому процессу. Передача аргументов списком означает, что аргументы в порождаемый процесс передаются один за одним, в том порядке, как пользователь перечислил их в обращении к функции ехес или spawn. Передача аргументов массивом означает, что аргументы помещаются в массив и указатель на массив передается порождаемому процессу. Передача списком обычно используется, когда число аргументов постоянно и известно заранее, а метод передачи аргументов массивом полезен, когда число аргументов должно быть определено во время работы. Последнее поле определяет: унаследует ли порождаемый процесс от родителя окружение, или оно будет изменено для него.
Таблица 9.1.
функция | Использование PATH переменной | Способ передачи аргументов | Окружение |
execl | не использует PATH | список аргументов | наследует от родителя |
spawnl | |||
execle | не использует PATH | список аргументов | указатель на таблицу окружения (последний аргумент) |
spawnle | |||
execlp | использует PATH | список аргументов | наследует от родителя |