Функции работы с процессами

 

В Unix используется в основном 4 функции:

 

    fork () – функция создания нового процесса, с новым идентификатором и копирования в него контекста вызывающего процесса. Функция выполняется следующим образом:

 

    В системной таблице процессов создается новый элемент для создаваемого процесса.

 

    Новому процессу выделяется память.

 

    В выделенную память нового процесса копируется контекст вызывающего процесса.

 

    Увеличивается счетчик во всех таблица работы с файлами для файлов вызывающего процесса (на единицу).

 

    Возвращается код завершения

 

 

    Два идентичных процесса, счетчики команд указывают на следующие команды:

 

    Fork родителя возвращает идентификатор дочернего процесса, а fork дочернего процесса возвращает 0.

 

    exec () – используется для запуска в рамках текущего процесса новой программы, загруженной из файла, указанного в качестве параметра при вызове этой функции.

 

    exit (status) – функция используется для завершения процесса. В качестве параметра можно задать код завершения (статус). Exit записывает этот код в элемент системной таблицы процессов, описывающих текущий процесс и посылает родительскому процессу специальный сигнал SIGCLD, извещающий о завершении дочернего процесса.

 

    wait () – используется для ожидания родительским процессом завершения дочернего процесса. Ставит родительский процесс в состояние ожидания до прихода сигнала SIGCLD, а после прихода, считывает код завершения дочернего процесса из элемента системной таблицы процессов.

 

    Возможны разные ситуации использования exit и wait в родительском процессе:

 

 

    Пример работы в оперативном режиме:

 

while(1)

{

cmd=prompt()

cmd=verify(cmd)

Rr=fork()

if(rv==0)

       {

exec(cmd)

       exit(1)

       }

else

s=wait()

}

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: