init和bash终端进程之间的关系

时间:2013-08-11 18:26:18

标签: linux memory

每当我们打开终端时,内核都会创建一个进程(使用fork + exec的bash-terminal),并且它的父进程是“init”。但是这个“配偶终端”变成了父母,并创建了另一个由用户可视化的过程“终端”。

只是想知道“init”(pid = 1,ppid = 0),“mate-terminal”(pid = 200和ppid = 1)和“terminal”之间共享什么类型的文件描述符,内存等(pid = 201,ppid = 200)。

我了解进程堆栈以及哪些段已共享但无法在此实际场景中清晰可视化。

请帮助我理解过程的记忆信息。

欢迎任何帮助..

1 个答案:

答案 0 :(得分:2)

init与其终端子节点之间或第一终端节点及其终端子节点之间没有任何共享。

这是因为虽然fork()会使两个进程(父和子)共享一些对象,但exec()系列函数会用新的进程映像完全替换当前进程映像。

这意味着忘记了对前一个对象的所有引用,例如父亲的共享文件描述符。