![会话和进程这两个术语在 shell 脚本中或者至少在 Bash 中是完全同义的吗?](https://linux22.com/image/11811/%E4%BC%9A%E8%AF%9D%E5%92%8C%E8%BF%9B%E7%A8%8B%E8%BF%99%E4%B8%A4%E4%B8%AA%E6%9C%AF%E8%AF%AD%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%88%96%E8%80%85%E8%87%B3%E5%B0%91%E5%9C%A8%20Bash%20%E4%B8%AD%E6%98%AF%E5%AE%8C%E5%85%A8%E5%90%8C%E4%B9%89%E7%9A%84%E5%90%97%EF%BC%9F.png)
我一直认为,在一般的 shell 脚本中,特别是在 Bash 中,术语“会话”和“进程”通常意味着与某些代码片段的执行完全相同的事情,它们都与内核/shell/某些代码有关。 -公用事业。
会话和进程这两个术语在 shell 脚本中或者至少在 Bash 中是完全同义的吗?
答案1
会话和进程这两个术语在 shell 脚本中或者至少在 Bash 中是完全同义的吗?
不,它们根本不一样。
A过程是程序的运行实例。它有一个进程 ID (PID)、一组虚拟内存、一个用户 ID、一组打开的文件描述符以及许多其他内容。
Unix 的概念是会议是一个与分组进程相关的内核构造,主要是在基于终端的登录上下文中。
一个会话是一个团体进程本身分为一个或多个进程组。下图来自《Unix 环境中的高级编程》,很好地展示了这种关系:
值得一提的是,整个会议可以有一个控制终端,但其中的进程在其他方面是不同的。
看:
笔记:
当然,“会议”可以具有与终端无关的其他含义。登录会话的概念在 GUI 系统或基于 Web 的程序中也是有意义的,即使它们不像基于终端的会话那样使用终端和进程组。
话又说回来,“过程”还有其他不太技术性的含义。