Перемещение активных заданий в командной оболочке из фона на передний план и наоборот - PullRequest
1 голос
/ 30 октября 2009

В этом разделе руководства glibc объясняется управление заданиями, но если я не пропускаю его, то не объясняется, как реализовать возможность перемещения задания, которое уже запущено, в фоновый или передний план.

Кто-нибудь может дать мне базовый пример, обзор или ссылку, объясняющую, как это работает?

Я имею в виду не как это сделать в оболочке, а как реализовать это при написании оболочки.

Ответы [ 2 ]

4 голосов
/ 31 октября 2009

В операционных системах Posix * nix есть два аспекта переднего плана / фона.

Один из них абсурдно прост: оболочка или какой-либо другой родительский процесс либо равен , либо не ожидает (через некоторое изменение wait(2)), пока ребенок не завершит работу. Если родитель ждет, это на переднем плане. Если это не так, это фон. В оригинальных версиях * nix это была целая история. Как вы можете видеть, оболочка фактически реализовала меньше для реализации магического паттерна % command &, чем просто % command, но лишь немногие другие системы могли это сделать.

Теперь, это оставляет несколько свободных концов. Процессы имеют управляющие терминалы, а терминалы имеют группы процессов. Есть лидеры сессий и лидеры групп процессов. Хорошо иметь сигналы, направленные одновременно только на, скажем, один подключенный конвейер в фоновом режиме. Задания в фоновом режиме, которые пытаются терминальный ввод-вывод, получают сигнал Когда пользователи выходят из системы, ОС может захотеть восстановить виртуальный или физический терминал для безопасности и для того, чтобы предоставить следующему пользователю беспрепятственный доступ. Таким образом, вся история становится более сложной. 4.1BSD в сущности представил современный полнофункциональный механизм управления работой.

Я дал вам ключевые слова для поиска, если вы хотите узнать на более подробном уровне, чем этот.

0 голосов
/ 30 октября 2009

Я не хочу быть умной задницей, но ты пробовал заглянуть:

http://ftp.gnu.org/pub/gnu/bash/bash-4.0.tar.gz

; -)

-Oisin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...