Терминал: интерпретация запущенных процессов

Я написал программу в среде Eclipse. Сначала я выполняю это из Eclipse. После этого из окна терминала я просматриваю список своих процессов. Теперь я запускаю эту программу из командной строки и просматриваю список процессов.

Я вижу, что процесс перечислен с различными состояниями: когда программа выполняется из Eclipse, состояние S, когда программа выполняется из терминала, состояние S +.

В чем причина?

0
задан 10 October 2013 в 11:34

1 ответ

Когда вы запускаете процесс в терминале, его состояние процесса помечается + , потому что это процесс переднего плана в этом терминале. Это означает, среди прочего, что терминал может использоваться для управления процессом. Например, нажатие Ctrl-C приведет к отправке сигнала SIGINT процессу. В зависимости от обработчиков сигналов в программе, это обычно завершает процесс. Кроме того, закрытие терминала отправит в процесс сигнал SIGHUP*.

Когда вы запускаете процесс из Eclipse, + там нет, потому что процесс не входит в группу процессов переднего плана какого-либо терминала. Фактически, если вы не запустили Eclipse с терминала (а не подключили его к & или ^Z), само Eclipse не будет иметь управляющего терминала, как и ни один из его дочерних процессов.


*) HUP для «зависания» со времен, когда терминалами были физические машины, которые подключались к компьютерам по последовательным линиям удаленного доступа

0
ответ дан 10 October 2013 в 11:34

Другие вопросы по тегам:

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