Какой сигнал я должен отправить в фоновый процесс, чтобы переместить его на передний план? СИГТТИН, СИГТОУ или …?
gurudoglu. Я думаю, что ответ вашего запроса здесь:
Это не сигналы, которые непосредственно контролируют, являются ли задания приоритетными или фоновыми. Работы находятся под контролем оболочки (обычно).
Например, при bash
, если вы выполните:
pax> sleep 3600 & pax> jobs
вы увидите вывод, например:
[1]+ Running sleep 3600 &
Затем вы можете вернуть эту работу на передний план, используя:
pax> fg %1 sleep 3600
(и терминал ждет).
Использование CTRL Z посылает сигнал процессу ( 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
.
Вероятно, лучше всего подумать о сигналах (которые влияют на процесс) и на переднем плане / фоне (которые влияют на оболочку, которая запустила процесс, определив, будет ли она ждать ее, помимо прочего, отдельно).
Нет никакого способа (в любой OS, о котором я знаю еще) использовать сигнал, чтобы перенести процесс на передний план.
Я считаю, что вы можете только вывести процесс на передний план, используя fg
Передний план применим только в контексте консоли, и сигнал не может сообщить процессу, что консоль на переднем плане, чтобы …
Предполагая, что вы находитесь в Unix и запустили процесс из оболочки, вы можете ввести следующее