Управление процессами
| Функция | Краткое описание | ||
| 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 |
массив аргументов |
указатель на таблицу окружения (последний аргумент) |