2012-09-13 12:51:29 +0000 2012-09-13 12:51:29 +0000
88
88

Какое влияние оказывает CTRL + Z на приложение unix\Linux.

Я был любопытен и сбит с толку, что именно является поведением CTRl+Z.

Я знаю, если процесс запущен на переднем плане, и мы нажимаем ctrl+z, то он переходит в фоновое состояние.

Но что именно происходит.

Продолжает выполнять свою работу, или его приостанавливают и останавливают в том месте, где он был.

И если его остановить в этой точке, и каков смысл задания фона.

Ответы (4)

74
74
74
2012-09-13 12:57:13 +0000

Работа в фоновом режиме" - это просто работа, которая не взаимодействует с пользователем - она не управляет tty и просто делает свою работу (обычно бесшумно). Задание на переднем плане - наоборот, оно удерживает контроль над tty для взаимодействия с пользователем.

Control-Z приостанавливает последний процесс на переднем плане (последний процесс, взаимодействующий с tty) (если только этот процесс не предпринимает шаги по игнорированию приостановки, как это обычно делают оболочки). Обычно это возвращает вас в оболочку, из которой вы можете ввести команду bg для перемещения только что приостановленного процесса в фоновом режиме (позволяя ему продолжить работу) или fg для возврата его на передний план.

58
58
58
2012-09-13 12:57:09 +0000

Нажатие Ctrl+Z посылает сигнал TSTP в ваш процесс. Это останавливает выполнение (ядро больше не будет планировать процессорное время) и процесс ожидает CONT для продолжения обработки.

Вы можете эмулировать/реплицировать это через kill -TSTP и kill -CONT (так как kill будет посылать номинированный сигнал вашему процессу, несмотря на имя!)

Оболочка оболочки имеет функциональность ‘фоновой’ обработки, но это связь между оболочкой и процессом. Сам процесс на самом деле не имеет понятия ‘фон’ или ‘передний план’.

Смотрите здесь для более подробной информации.

15
15
15
2012-09-13 13:02:52 +0000

Рассмотрим эту команду, которая занимает примерно 4,5 секунды на моем ноутбуке:

echo 2^10000000 | bc -lq | wc -c

При нажатии Ctrl+Z вычисление будет приостановлено. Можно возобновить вычисления на переднем плане с использованием команды fg или возобновить их в фоновом режиме с использованием команды bg. Последнее более или менее эквивалентно выполнению:

echo 2^10000000 | bc -lq | wc -c &
9
9
9
2012-09-13 12:57:30 +0000

При нажатии ctrl+z процесс приостанавливается и останавливается. С помощью fg вы можете переместить приостановленное задание на передний план, с помощью bg вы можете запустить его в фоновом режиме.

Дополнительную информацию см. в http://linuxreviews.org/beginner/jobs/ .

Похожие вопросы

6
10
10
5
3