2009-12-04 3 views

ответ

6

gurudoglu. Я думаю, что ответ Ваш запрос находится здесь:

+0

благодарит FTIK. Я нашел ответ на свой вопрос по первой ссылке: D – 2009-12-04 02:07:11

+0

хороший ответ - но вопрос по-прежнему принципиально неправильный :) –

+2

Ни один из этих сигналов не переместит процесс на передний план. SIGCONT приведет к возобновлению процесса после того, как SIGSTOP'п. SIGTT просто доставляются в процесс, когда они пытаются читать или писать в фоновом режиме. Они делают * не * перед процессом, фактически их действие по умолчанию - просто остановить процесс, как если бы вы отправили SIGSTOP. Вы все равно должны либо SIGCONT, чтобы они продолжали работать в фоновом режиме, либо fg из оболочки, чтобы вывести их на передний план. – paxdiablo

2

Нет способа (в любой ОС, о котором я еще не знаю) использовать сигнал для переноса процесса на передний план.

Я считаю, что вы можете принести только процесс на передний план с помощью fg

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

+0

мне нужно имя сигнала :) – 2009-12-04 01:19:33

+1

нет имени сигнала :) –

+4

нет никакой ложки :-) – paxdiablo

16

Это не сигналы, которые непосредственно контролируют, являются ли задания приоритетными или фоновыми. Работы находятся под контролем оболочки (обычно).

Например, под bash, если выполнить:

pax> sleep 3600 & 
pax> jobs 

вы увидите выход, как:

[1]+ Running     sleep 3600 & 

Затем, вы можете принести эту работу обратно на первый план с помощью:

pax> fg %1 
sleep 3600 

(и терминал ждет).

Использование CTRLZделает послать сигнал процессу (SIGSTOP), а также положить его на задний план, но только сигнал, который может изменить что SIGCONT (продолжить):

pax> fg %1 
sleep 3600 
^Z 
[1]+ Stopped     sleep 3600 
pax> jobs 
[1]+ Stopped     sleep 3600 
pax> kill -CONT %1 
pax> jobs 
[1]+ Running     sleep 3600 & 

Это приведет к тому, что процесс начнет работать снова, но он не вывести его на передний план. Для этого вам понадобится команда fg.

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

+0

вы можете продолжить приостановленный процесс передачи сигнала в C, как это: убийства (1453, SIGCONT); Мне нужно имя сигнала, который может перемещать фоновый процесс на передний план, как SIGCONT. :) – 2009-12-04 01:25:54

+3

Нет ни одного. Легко и просто. Foreground/background не является атрибутом процесса, это атрибут * shell *, который запустил этот процесс. Оболочка контролирует этот аспект. Вы можете отправить SIGCONT, чтобы запустить процесс (если он был остановлен с помощью SIGSTOP), но нет сигнала, который позволит процессу заставлять себя на передний план, потому что он просто не имеет такой мощности. – paxdiablo

+2

@ gurudoglu - Это похоже на попытку позвонить телеведущей и попросить их включить телевизор. Для этого нет номера. К счастью ... –

1

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

  • Остановить процесс ::^Z
  • процесса перемещения в фон :: Б.Г.
  • Переместить назад на передний план :: fg
Смежные вопросы