会话: 一个或多个进程组。起于用户登录,终止于用户退出。此期间所有进程都属于这个会话期。
会话首进程:调用setsid创建会话的进程
1.规定组长进程不能调用setsid,因为调用setsid后,调用进程会成为新的进程组的组长进程.
如何保证? 先调用fork,然后终止父进程,此时由于子进程的进程组ID为父进程的进程组ID,而子进程的ID是重新分配的,所以保证子进程不会是进程组长,从而子进程可以调用setsid。
2.调用setsid后,
1)调用进程变成会话首进程
2)调用进程成为新的进程组的组长进程
3)删除控制终端
进程组:一个或多个进程。
组长进程: 进程ID==进程组ID
调用setpgid和setsid都会创建进程组。
- 浏览: 44878 次
相关推荐
编写 Linux 守护进程需要了解多个概念,如子进程、进程组、会晤期、信号机制、文件、目录和控制终端等。 要编写一个 Linux 守护进程,需要遵循以下八条经验: 1. 屏蔽一些有关控制终端操作的信号,以防止守护进程...
守护进程的编程涉及到一系列的系统调用和技术细节,包括文件描述符的管理、会话和进程组的分离、工作目录的设置等。正确地实现这些步骤是确保守护进程稳定运行的关键。理解并掌握守护进程的创建方法对于系统管理员和...
3. **进程组和会话**:进程可以组织成进程组,多个进程组组成一个会话,这对于控制进程的执行有重要作用,如`bg`和`fg`命令用于在后台和前台切换进程。 通过以上介绍,你应该对Linux打印进程树有了全面的理解。熟练...
Linux会话主要通过两种类型的连接来实现:本地连接和远程连接。本地连接通常是指用户通过直接连接到主机的键盘显示器与系统交互,这种方式的安全性很高,因为物理连接难以被篡改。远程连接则以SSH(Secure Shell)为...
Linux 会话机制详解 本文将详细介绍 Linux 会话机制的相关知识点,包括会话...Linux 会话机制是一个复杂的系统,它涉及到连接的启用、登录验证、登录后执行的程序等多个方面,但其安全性和可靠性是 Linux 系统的基础。
它允许在系统出现问题或需要进行其他操作时,能够安全地保存当前进程和会话的状态,并在适当时机恢复到之前的状态,从而避免数据丢失和提高效率。Linux操作系统因其开源特性和强大的可定制性,成为了开发此类软件的...
为了更好地管理和控制进程,Linux定义了一系列的进程状态来表示进程当前所处的不同情况。理解这些状态对于系统管理员和开发人员来说至关重要,它有助于更有效地调试程序、监控系统性能以及优化资源利用。 #### 进程...
在Linux系统管理中,用户管理和进程管理是两个关键的领域。这个实验主要涵盖了这两个方面的内容,旨在让学生熟悉和掌握Linux中的基本操作。 首先,我们来看用户管理部分: 1. 创建用户登录脚本模板:在/Linux/目录...
在终端上运行的进程可以分为前台进程和后台进程。前台进程接收用户的输入,而后台进程则在用户不直接交互的情况下运行。使用`&`符号可以使命令在后台运行,例如`find / -name *.c | grep "linux" &>/dev/null &`,这...
在`fork()`成功后,父进程和子进程将共享相同的代码段和数据段,但拥有各自的堆栈和资源。如果希望父进程等待子进程完成,可以使用`wait()`或`waitpid()`系统调用来实现。 创建守护进程的关键在于与运行环境的隔离...
2. **与环境隔离**:守护进程需要与创建它的环境进行隔离,包括关闭未使用的文件描述符、脱离控制终端、会话和进程组、改变工作目录以及清除文件创建掩模等。 3. **启动方式**:守护进程可以通过多种方式启动,比如...
守护进程与 Windows 中的后台服务程序比较类似,如 Windows 中有一种 time 系统服务,用来从远程主机获得日期和时间,Linux 中也有类似 的两个守护进程 time 和 time-udp,分别采用 TCP 和 UDP 协议从远程主机获得...
2. **脱离控制终端、登录会话和进程组**:调用`setsid()`函数,使得进程成为新的会话组长和进程组长,从而与原来的登录会话和终端分离,避免受到终端的影响。 3. **禁止重新打开控制终端**:再进行一次`fork()`,...
守护进程的父进程通常是初始化进程init,它们不属于任何终端,且进程组和会话标识均为特殊值。 创建守护进程的关键步骤包括: 1. 清除文件创建权限:守护进程需要确保不会继承不必要的文件描述符,以避免与父进程...
4. **进程组组长和会话首进程**:守护进程既是其进程组的组长进程,也是会话的首进程,并且是这些组和会话中的唯一进程。 创建守护进程通常涉及以下步骤: 1. **让init进程成为父进程**:通过fork创建子进程,并让...
在成功调用`fork()`后,父进程和子进程会共享大部分资源,但它们拥有独立的进程ID(PID)和执行上下文。`fork()`返回值在父进程和子进程中不同,子进程返回0,而父进程则返回子进程的PID。如果调用失败,两个进程...
在Linux系统中,进程是资源分配和调度的基本单位。 #### 进程的概念 程序是静态的,由一系列指令组成,存储在文件中。而进程是动态的,是程序在计算机上的一次执行过程。当一个程序被加载到内存并开始执行时,它就...
对于进程组ID和会话ID的管理,Linux内核同样采用了类似的机制。进程组ID(PGID)和会话ID(SID)分别用于标识进程组和会话。进程可以改变自己的进程组或会话,例如,通过`setpgrp`系统调用可以创建一个新的进程组,...