我一直认为,在一般的 shell 脚本中,特别是在 Bash 中,术语“会话”和“进程”通常意味着与某些代码片段的执行完全相同的事情,它们都与内核/shell/某些代码有关。 -公用事业。
会话和进程这两个术语在 shell 脚本中或者至少在 Bash 中是完全同义的吗?
答案1
会话和进程这两个术语在 shell 脚本中或者至少在 Bash 中是完全同义的吗?
不,它们根本不一样。
A过程是程序的运行实例。它有一个进程 ID (PID)、一组虚拟内存、一个用户 ID、一组打开的文件描述符以及许多其他内容。
Unix 的概念是会议是一个与分组进程相关的内核构造,主要是在基于终端的登录上下文中。
一个会话是一个团体进程本身分为一个或多个进程组。下图来自《Unix 环境中的高级编程》,很好地展示了这种关系:
值得一提的是,整个会议可以有一个控制终端,但其中的进程在其他方面是不同的。
看:
笔记:
当然,“会议”可以具有与终端无关的其他含义。登录会话的概念在 GUI 系统或基于 Web 的程序中也是有意义的,即使它们不像基于终端的会话那样使用终端和进程组。
话又说回来,“过程”还有其他不太技术性的含义。