120
Это указание предписывает командному интерпретатору
запустить программу program2 без ожидания ее завершения. В
таком случае говорят, что программа program2 работает в фоновом
режиме.
Если вы пожелаете скорректировать приоритет программы до
ее запуска, вы можете применить команду nice – точно так же, как в
Unix:
$ nice program3
Запуск процесса из программы
Нас обычно не заботит тот факт, что командный
интерпретатор создает процессы – это просто подразумевается. В
некоторых прикладных задачах можно
положиться на сценарии
командного интерпретатора (пакеты команд, записанные в файл),
которые сделают эту работу за вас, но в ряде других случаев вы
пожелаете создавать процессы самостоятельно.
Например, в большой мультипроцессорной
системе вы
можете пожелать, чтобы одна главная программа выполнила запуск
всех других процессов вашего приложения на основании
некоторого конфигурационного файла. Другим примером может
служить необходимость запуска процессов по некоторому событию.
Рассмотрим
некоторые из функций, которые обеспечивает
запуск других процессов (или подмены одного процесса другим):
· system();
·
семейство функций ехес();
·
семейство функций spawn();
· fork();
· vfork().
Какую из этих функций применять,
зависит от двух
требований: переносимости и функциональности. Как обычно,
между этими двумя требованиями возможен компромисс.
Обычно при всех запросах на создание нового процесса
происходит следующее. Поток в
первоначальном процессе
вызывает одну из вышеприведенных функций. В конечном итоге
121
функция заставит администратор процессов создать адресное
пространство для нового процесса.
Затем ядро выполнит запуск
потока в новом процессе. Этот поток выполнит несколько
инструкций и вызовет функцию main().
Do'stlaringiz bilan baham: