Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Подробнее о флагах

Лекция №2

int clone (int (*fn) (void*),

void *stack,

int flags,

void *args)

 

Создает новый процесс в самом широком понимании.

1) указатель на функцию, которая будет запущена как новый поток

2) указатель на стек для нового процесса (конец стека)

3) флаги

4) аргумент функции

CLONE_PARENT

CLONE_FS – клонировать файловую систему (клонируется корневой или текущий каталог), если флага нет, то С получит копию, если есть, то В и С имеют общие корневой и текущий каталоги.

CLONE_FILES – общими становятся таблицы файлов.

CLONE_SIGHAND – общая обработка сигналов

CLONE_VFORK – если установлен, то запускается процесс, а родительский процесс приостанавливается до остановки дочернего (выход по exit или вызов любой функции exec *)

CLONE_VM – общей становится виртуальная память, в этом случае можно не указывать PARENT, FS, FILES (фактически создается поток).

 

pid_t wautpid (pid_t pid,

int *status,

int flags)

 

Ожидает завершение процесса(ов)

1) Если pid > 0, то мы ждем завершение процесса с указанным pid номером.

Если pid = 0, ждем завершения любого дочернего процесса, который принадлежит к той же группе процессов, что и вызывающий.

Если pid = -1, ждем завершение любого дочернего процесса.

Если pid < -1, ждем завершение любого дочернего процесса из группы, номер которой равно модулю числа pid.

2) Указатель на нашу переменную, в которую будет записан код завершения процесса.

3) либо 0

либо WNOHANG – не вешаться, если установлен, то функция проверяет на завершенность процессы, не ожидая их завершения.

Результат > 0 – номер процесса, который завершился;

Результат = 0 – нет завершившихся процессов (дочерние есть, но они не завершены);

Результат = -1 – ошибка.

pid_t wait (int *st) – ждет завершения дочернего процесса.

pid_t getpid() – получить номер процесса.

pid_t getppid() – получить номер родителя.

<== предыдущая лекция | следующая лекция ==>
Введение. Управление процессами в среде UNIX | Struct shmid_ds
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 295; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.