每当我们打开一个terminal,内核创build一个进程(bash-terminal使用fork + exec),它的父进程是“init”。 但是,这个“mate-terminal”成为父母,并创build另一个用户可视化的过程“terminal”。
只是想知道“init”(pid = 1,ppid = 0),“mate-terminal”(pid = 200和ppid = 1)和“terminal”(pid = 1)之间共享什么types的文件描述符, 201和ppid = 200)。
我知道这个过程栈以及哪些段被共享,但在这个实际的场景中无法清晰地显示。
请帮助我理解这个过程的内存语义。
从用户模式访问内核内存(Windows)
执行缓冲区中的文件
为什么Linux中的物理内存被分配线性增加而不是一次?
如何通过一个mmap映射内存指针来立即刷新写入?
虚拟机pipe理程序guest os中的内存地址转换
任何帮助,欢迎..
LINUX中的内存故障错误,但不是在UNIX中
在Linux中监视程序的内存使用情况
pipe理私人堆
如何创build(32位).NET应用程序以使用3 GB RAM?
在Windows中分配内存
初始化程序和它的终端子程序之间以及第一个终端程序和它的终端子程序之间都没有共享。
这是因为,尽管fork()会使进程(父和子)共享一些对象,但exec()系列函数会将当前进程映像完全替换为新的进程映像。
这意味着所有对以前对象的引用,例如来自父亲的共享文件描述符,都被遗忘。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。