setsid
时间:2021-09-04
本文章向大家介绍setsid,主要包括setsid使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. 介绍
#include <unistd.h>
pid_t setsid(void);
创建新的会话,并设进程组ID为新的会话ID
2. linux中各种进程组控制
单个进程使用进程pid控制;
如果想同时控制多个进程,需要进程组,进程组中的进程都是由一个进程fork()出来的;
进程组可以分前台进程组和后台进程组:
- 前台进程组: 可以直接接收终端控制信号的进程组,正在前台运行的,比如按 ctrl+c,可以直接给正在运行的进程组发中断信号
- 后台进程组:不能直接接收终端控制,比如按 ctrl+c,不能传递给后台进程
谁负责判断哪个是前台进程组,哪个是后台进程组?进而给前台进程组一个控制终端呢?是会话组来管理的;
一个会话组包含1个前台进程组和多个后台进程组,一个会话组有1个会话id。只有会话组的领头进程能获取控制终端,进而控制哪个进程组可以受控制终端控制;
一般打开一个shell,就新建一个会话组,有一个控制终端;关闭这个shell,会给当前会话组中的所有进程(包括前台和后台)发送一些中断信号,告诉进程这个会话组要退出了,你们看着办。
设置daemon程序时,主要目的是为了让程序不受当前控制终端信号影响。因此先fork()一次,调用setsid()
开个新的会话组,这样就不受启动这个程序的shell的信号影响了。有的会再fork()一次,是因为只有会话的领导进程能获取控制终端,再fork()出来的进程是领导的子进程,一定不会获取控制终端。其实不fork()第二次也可以,nginx都没这样。
至于具体有哪些输入输出和tty那些,之后再看吧。
原文地址:https://www.cnblogs.com/suntus/p/15225895.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- js的的的图片随屏幕滚动而滑入滑出的效果(万 万。。。字长文)
- Codeforce-CodeCraft-20 (Div. 2)-B. String Modification (找规律+模拟)
- Codeforce-CodeCraft-20 (Div. 2)-A. Grade Allocation
- Cypress系列(69)- route() 命令详解
- Codeforce-Ozon Tech Challenge 2020-D. Kuroni and the Celebration(交互题+DFS)
- Codeforce 263D Cycle in Graph 搜索 图论 哈密尔顿环
- codeforce 266c Below the Diagonal 矩阵变换 (思维题)
- Codeforce-Ozon Tech Challenge 2020-C. Kuroni and Impossible Calculation(鸽笼原理)
- 探索ParNew和CMS垃圾回收器
- Codeforce-Ozon Tech Challenge 2020-B. Kuroni and Simple Strings(贪心)
- 第K短路+严格第K短路
- PostgreSQL异常重启postmaster.pid处理
- Codeforce-Ozon Tech Challenge 2020-A. Kuroni and the Gifts
- 洛谷P3360偷天换日(树形DP)
- Java开发编程规范: 2.常量定义