- •Утилита make
- •Запуск утилиты make
- •Описание правил
- •Синтаксис правила
- •Интерфейсы прикладного программирования unix и posix
- •. Интерфейсы прикладного программирования posix
- •Общие характеристики интерфейсов прикладного программирования
- •Системные функции управления состоянием процесса
- •Int main()
- •Int main()
- •Сигналы
- •Назначение и основные сведения
- •Типы и имена сигналов
- •Void(*signal(int sig, void(*func)(int)))(int);
- •Int sigaction(int sig, const struct sigaction *act, struct sigaction *oact);
- •Int main( int argc, char** argv)
Системные функции управления состоянием процесса
Всякому вновь создаваемому процессу операционная система 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>