Управление процессами
Функция | Краткое описание | ||
abort | завершить процесс | ||
execl | выполнить порождаемый процесс со списком аргументов | ||
execle | выполнить порождаемый процесс со списком аргументов и заданным окружением (контекстом имен командного языка операционной системы) | ||
execlp | выполнить порождаемый процесс, используя переменную PATH и список аргументов | ||
execlpe | выполнить порождаемый процесс, используя переменную PATH, заданное окружение и список аргументов | ||
execv | выполнить порождаемый процесс с массивом аргументов | ||
execve | выполнить порождаемый процесс с массивом аргументов и заданным окружением | ||
execvp | выполнить порождаемый процесс, используя переменную PATH и массив аргументов | ||
execvpe | выполнить порождаемый процесс, используя переменную PATH, заданное окружение и массив аргументов | ||
exit | завершить процесс | ||
_exit | завершить процесс без скидывания буферов | ||
signal | управление сигналом прерывания | ||
spawnl | выполнить порождаемый процесс со списком аргументов | ||
spawnle | выполнить порождаемый процесс со списком аргументов и заданным окружением | ||
spawnlp | выполнить порождаемый процесс, используя переменную PATH и список аргументов | ||
spawnlpe | выполнить порождаемый процесс, используя переменную PATH, заданное окружение и список аргументов | ||
spawnv | выполнить порождаемый процесс с массивом аргументов | ||
spawnve | выполнить порождаемый процесс с массивом аргументов и задан ным окружением | ||
spawnvp | выполнить порождаемый процесс, используя переменную PATH и массив аргументов | ||
spawnvpe | выполнить порождаемый процесс, используя переменную 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 spawnl |
не использует PATH |
список аргументов |
наследует от родителя |
execle spawnle |
не использует PATH |
список аргументов |
указатель на таблицу окружения (последний аргумент) |
execlp spawnlp |
использует PATH |
список аргументов |
наследует от родителя |
execlpe spawnlpe |
использует PATH |
список аргументов |
указатель на таблицу окружения (последний аргумент) |
execv spawnv |
не использует PATH |
массив аргументов |
наследует от родителей |
execve spawnve |
не использует PATH |
массив аргументов |
указатель на таблицу окружения (последний аргумент) |
execvp spawnvp |
использует PATH |
массив аргументов |
наследует от родителя |
execvpe spawnvpe |
использует PATH |
массив аргументов |
указатель на таблицу окружения (последний аргумент) |