Tim*_*Tim 16 process gnu-screen job-control disown
是否可以更改进程的父进程?如果是,如何?
例如,
如何screen
设法将会话screen
及其内部运行的进程附加到不同的 shell 进程?父进程有变化吗?
我似乎听说过其他更改程序运行的 shell 进程的方法,但我不记得了。程序的父进程是否也发生了变化?
我以为disown
在一个进程上改变了进程的父进程,只是因为名字disown
暗示了这一点。但我发现这不是真的。
Emacs 客户端可以在不同的终端选项卡上附加到 emacs 服务器。父进程有变化吗?
Arc*_*ege 15
进程的父进程 id (ppid) 不能在内核之外更改;没有 setppid 系统调用。内核只会在父进程终止后将 ppid 更改为 (pid) 1 - 如果进程没有响应父进程终止的信号。为了做到这一点,该过程需要有忽略各种信号(SIGHUP
,SIGTERM
等等)预先。
screen(1)
具有非常优雅的处理分离和重新连接的方法。当您第一次启动时screen
,您实际上是在启动一个用户界面 (ui),它默认会创建一个守护进程(会话管理器)。这个守护进程没有与之关联的终端,一个新的进程组 ( setpgrp(2)
),一个新的会话 ID ( setsid(2)
)。守护进程以 as 运行SCREEN
,然后将创建连接到伪终端 ( pty
) 的子进程,然后多路复用来自 ptys 和 ui ( screen
) 的数据。子进程认为他们正在与一个真正的终端交谈。
如果 uiscreen
终止,守护进程SCREEN
仍将运行、缓冲数据、处理信号、等待新的 ui 等,因为它是一个不同的进程组并在它自己的会话中。当您使用新的 ui 重新附加时screen
,守护程序将继续像以前一样多路复用。守护进程将继续运行,直到所有子进程终止、被杀死、遇到致命错误或主机重新启动。
归档时间: |
|
查看次数: |
14266 次 |
最近记录: |