我在 Eclipse 环境中编写了一个程序。首先,我从 Eclipse 执行它。然后,从终端窗口查看我的进程列表。现在,我从命令行执行该程序并查看进程列表。
我看到该过程列出了不同的状态:当从 Eclipse 执行程序时,状态为 S,当从终端执行程序时,状态为 S+。
是什么原因?
答案1
当您在终端中运行该进程时,其进程状态将标记为+因为它是该终端中的前台进程。这意味着,除其他事项外,终端可用于控制进程。例如,按下Ctrl-C
将导致SIGINT
向进程发送信号。根据程序中的信号处理程序,这通常会终止进程。此外,关闭终端也会SIGHUP*
向进程发送信号。
从 Eclipse 运行该进程时,+不存在,因为该进程不在任何终端的前台进程组中。事实上,除非您从终端启动了 Eclipse(并且没有使用&
或 将其置于后台^Z
),否则 Eclipse 本身不会有控制终端,其子进程也不会有控制终端。
*) HUP 代表“挂断”,源自终端是通过串行拨号线路连接到计算机的物理机器的时代