Настройка и работа в Linux

         

Переднеплановые процессы


[Ваш редактор спросил Брайана: "Мне казалось, что в системе не существует концепции переднепланового (foreground) процесса; это вымысел оболочки." Ниже его ответ. --Iron]

Обычно я думаю также; возможно, потому, что я читал документацию к Bash. Однако ядро Linux определяет "группу переднепланового процесса" (foreground process group). Каждый управляющий терминал имеет группу переднепланового процесса. По умолчанию, это процессовая группа процесса (*1), который изначально был открыт терминалом. Но процесс может установить группу процесса переднего плана любой процессовой группе в своей сессии с помощью ioctl.

    (*1) Примечание переводчика: Я вполне осознаю, что данное выражение звучит, по меньшей мере, жутко, но мне не удалось сразу подобрать хороший перевод выражения "process group of the process" без потери или искажениия смысла. Возможно, позже (во второй жизни) меня осенит, и я подкорректирую это и, вероятно, другие трудные места. --Alex

В статье я несколько вольно использовал ссылку на "foreground processes," который, как я думаю, можно легко интерпретировать как "процессы в группе процессов переднего плана".

Я думаю, что только смысл группы процессов переднего плана (сущность ядра) в том, что процессы в этих группах процессов получают сигналы control-C и hangup.

Управление заданиями в Bash используют этот ioctl, чтобы любое ваше "переднеплановое задание" ("foreground job") стало переднеплановой процессовой группой для вашего терминала. Вот почему, поместив что-либо в фон, например, "grep abc * &", вы не сможете прервать это с помощью control-C. Для прерывания вам необходимо сначала выполнить "fg", заставляя Bash использовать ioctl для перевода этого в foreground, а только затем ввести Control-C.

Много лет назад, до Web, когда терминалы имели гораздо большее значение, я потратил много часов, продираясь через код ядра и экспериментируя, чтобы изучить обработку групп, сессий, управляющих терминалов, управление заданием, SIGINT, SIGHUP и т.д. Я бы смог написать об этом длинную статью, но, думаю, это уже действительно архаичная информация.

[Читателям: если вы хотите подтолкнуть его выложить свою такую "архаичную информацию", пишите в Mailbag. Помните, также, что Mailbag -- это место, где вы можете заказывать статьи по любой другой тематике. -- Iron ]



Содержание раздела