2015-12-06 3 views
0

Я хочу переместить процесс на передний план. Я знаю, что bash мне нужно использовать fg, но c как я могу это реализовать? любое предложение в качестве отправной точки для меня?как переместить фоновые процессы на передний план

+0

Что означает * передний план * из программы без оболочки? –

+0

Я реализую свою собственную оболочку c программированием @ScottHunter – esrtr

+0

Вы хотите, чтобы ваша программа запускалась как демон? –

ответ

1

Фон и передний план - это вопрос того, кто получает вход, который пользователь вводит в терминал. Процессы по-прежнему планируются операционной системой.

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

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

0

Лучшая точка входа - tcsetpgrp - функция, которая позволяет вам установить группу процессов в качестве приемника элементов управления с терминала и получить разрешение на ввод входов для выхода на терминал и обратно.

Чтобы все это работало правильно, вам также необходимо посмотреть setsid, чтобы установить сеанс.

Последующая интересная функция: setpgid для создания групп процессов.