Linux守护进程:nohup、&、setsid与fork的区别解析
需积分: 33 157 浏览量
更新于2024-09-07
2
收藏 270KB PDF 举报
"这篇文章除了探讨nohup、&、setsid、fork和fg、bg的区别,还涉及了守护进程、会话、进程组等概念,以及它们在Linux系统中的应用。"
1. **名词解释**
- **会话 (Session)**: 指用户登录Linux时创建的逻辑环境,每个会话都有唯一的**会话ID (SessionID)**。
- **用户 (User)**: 能够登录Linux的账号。
- **用户ID (UserID)**: 唯一标识Linux系统中每个用户的数字。
- **伪终端 (PTY)**: 一种虚拟的终端设备,用于模拟真实终端。
- **控制终端 (TTY)**: 实际的终端设备,如物理键盘和显示器。
- **pts (Pseudo-terminal slave)**: 与PTY的master端配合,用于实现远程或图形化界面的交互。
2. **守护进程 (Daemon)**
- 守护进程是在后台运行且与终端无关的进程。它不接收用户的直接输入,通常用于提供服务,如网络服务、日志记录等。
- 后台运行:通过fork创建子进程,或者在命令行中使用`&`符号将程序置于后台运行。
- 脱离终端:通过调用`setsid`,子进程可以脱离父进程的会话、进程组和控制终端。
3. **以“&”方式运行的问题**
- 使用`&`虽然可以让进程在后台运行,但并未完全脱离终端,仍受到终端的控制。
4. **fork**
- fork是创建新进程的操作,子进程会继承父进程的所有属性,包括会话ID和进程组ID。
5. **setsid & setuid**
- **setsid**: 用于创建新的会话,使得进程成为该会话的会话首进程,从而脱离原来的终端。
- **setuid**: 改变进程的用户ID,常用于提升或降低权限,例如执行需要root权限的任务。
- 应用场景:比如SUID位设置在二进制文件上,允许普通用户以文件所有者的权限执行。
6. **fg & bg**
- **fg**: 将后台运行的进程放到前台,恢复其控制权。
- **bg**: 让被挂起的进程继续在后台运行。
7. **示例代码 (abc.cpp)**: 可能包含使用上述概念的C++代码示例,用于演示如何在程序中实现后台运行和会话管理。
总结来说,nohup、&、setsid、fork和fg、bg都是Linux下管理进程的工具或操作。nohup用于在终端关闭后仍保持进程运行,`&`用于后台运行,setsid用于创建新的会话,fork用于创建子进程,而fg和bg则用于在shell中管理后台进程。了解这些工具的使用和它们之间的关系对于编写和管理Linux下的后台服务至关重要。
2020-09-14 上传
点击了解资源详情
点击了解资源详情
2024-11-27 上传
2023-09-09 上传
2023-05-23 上传
2021-01-20 上传