Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы / MAKE_posix_creprc_sem_sig.DOC
Скачиваний:
27
Добавлен:
01.05.2014
Размер:
146.94 Кб
Скачать

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

Всякому вновь создаваемому процессу операционная система VAX/VMS присваивает код идентификации, состоящий из 16-разрядных символов. Этот код записывается в длинное слово и служит в дальнейшем идентификатором процесса для ОС. Кроме того, каждому процессу в системе может быть при его запуске присвоено имя, содержащее до 15 символов. Таким образом, имя процесса может быть заранее определено программистом в то время, как код идентификации определяет система. Программист в некоторых случаях имеет возможность узнать код идентификации, присвоенный процессу системой. В VAX/VMS адрес слова, содержащего код идентификации, принято обозначать pidadr, а имя процесса - prcnam. Создание процесса производит системная функция

sys$creprc([pidadr],image,[input],[output],[error],

[prvadr],[quota],[&prcname],[baspri],[uic],[mbxunt],[stsflg]). Единственным обязательным параметром указанной функции является image - адрес дескриптора, содержащего имя файла, в котором хра- нится образ создаваемого процесса. Если указан параметр pidadr, то функция sys$creprc запишет по указанному адресу код идентификации, присвоенный процессу системой.

Имя, которое желательно присвоить процессу, должно содержаться в дескрипторе prcname, адрес которого может быть указан при обращении. Заданием параметров input, output и error могут быть определены устройства для ввода, вывода и выдачи сообщений об ошибках. Параметры input, output и error являются адресами дескрипторов, содержащих имена соответствующих устройств.

Параметр baspri определяет приоритет создаваемого процесса - этот параметр рекомендуется задавать, т.к. в противном случае процесс получит приоритет, равный нулю. Параметр prvadr - адрес 64-разрядного слова, содержащего список привилегий создаваемого процесса, параметр qota позволяет регулировать размеры квот, выделяемых данному процессу, параметр stsflg определяет вид создаваемого процесса по отношению к процессу, вызвавшему функцию sys$creprc, параметр uic позволяет задать код идентификации пользователя, который необходимо присвоить процессу, параметр mbxunt - имя почтового ящика, который будет присоединен к процессу. Указанные параметры являются довольно специфическими и в большинстве случаев задаются нулевыми.

Вызов функции sys$creprc может производиться либо операционной системой по команде, вводимой с терминала, либо каким-либо существующим процессом. Созданный процесс устанавливается в состояние готовности к исполнению, попадает в очередь готовых процессов соответствующего приоритета и начнет выполняться в соответствии с дисциплиной диспетчеризации (см.

/* Makefile*/

CXX = CC

targets = test_fork test_exit test_waitpid \

test_exec

all : $(targets)

$(targets) : $$@.C

$(CXX) -o $@ $@.C

clean :

/bin/rm -f $(targets)

/*test_fork*/

#include <iostream.h>

#include <stdio.h>

#include <unistd.h>

Соседние файлы в папке Материалы