当前位置: 首页 > news >正文

【Linux】守护进程

守护进程(Daemon)是一种在后台运行的特殊进程。它通常在操作系统启动时启动,并一直运行直至系统关闭。它不与任何终端关联,并且没有标准输入、输出和错误流。它的主要作用是在系统启动后执行一些特定的任务或者提供某些服务,例如网络服务、定时任务、日志记录等。它们通常使用 init 程序来启动和关闭。在 Linux 操作系统中,守护进程通常以字母“d”结尾,例如 httpd、sshd 、mysqld等。

守护进程(Linux的叫法,Windows上叫服务)

特点:后台、运行周期长。

会话(Session)是指用户登录系统后从登录到退出所经历的整个过程,期间可以运行多个进程,这些进程之间可以通过进程间通信(IPC)来进行数据交换。

会话首进程(Session Leader)是由用户登录时启动的第一个进程,它的进程号(PID)通常是1,它是该会话中所有进程的祖先进程。

进程组(Process Group)是一组相关进程的集合,它们可以通过进程组ID(PGID)来标识,其中一个进程被指定为组长进程。

组长进程(Group Leader)是进程组中的一员,它的任务是为该组的其他进程提供一个中心控制点,它通常是进程组中第一个启动的进程,也可以通过setpgid()系统调用来动态指定。组长进程可以接收来自终端的信号,它可以将信号传递给组中的其他进程,也可以将信号忽略或处理。    

创建新会话

fork()让父进程退出,留下的就是子进程

挑一个组员进程,setsid()创建新进程,该进程变成组长进程

1.fork(),退出父进程//得到普通进程(非组长进程)

2.setsid()创建新会话

3.fork(),退出父进程(非必须)--防止进程组组长与其他进程关联

4.chdir("/");将当前的工作路径放到根目录--确保不会被卸载

5.umask(0);//删除掩码//给权限

6.close();//关闭标准输入输出

7.处理僵死进程;

umask掩码 (特殊权限)自己 同组人 other

掩码 umask 是一种权限掩码,用于限制文件和目录的默认权限。

它通常由三个八进制数字表示,分别代表文件所有者、同组用户和其他用户的权限。umask 的作用是在创建新文件或目录时,屏蔽掉一些默认权限,以达到更好的安全性和隐私保护。

例如,一个 umask 值为 022 的用户在创建新文件时,文件的默认权限为 rw-r--r--,即文件所有者有读写权限,同组用户和其他用户只有读权限。

守护进程不属于当前进程组

#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<sys/stat.h>
int main()
{pid_t pid = fork();if(pid!=0)exit(0);//退出父进程setsid();//创建新会话pid_t pid1 = fork();if(pid1!=0){exit(0);}chdir("/");umask(0);int maxfd = getdtablesize();//得到文件描述符个数for(int i=0;i<maxfd;i++)//关闭他们{close(i);}while(1){FILE* fp = fopen("/tmp/testtest.log","a");//追加信息if(fp==NULL){break;}time_t tv;time(&tv);fprintf(fp,"time is %s",asctime(localtime(&tv)) );fclose(fp);sleep(5);}}

tail -f 文件名,可以看文件末尾追加的内容

 删除守护进程

http://www.lryc.cn/news/90719.html

相关文章:

  • Vue中组件和插件有什么区别?
  • 第五章 图像处理
  • 算法8.从暴力递归到动态规划1
  • 8-JDBC 编程
  • 零基础如何学习 Web 安全?
  • 【简单实用框架】【AddressablesMgr】【可移植】
  • android 12.0Launcher3禁止拖拽app图标到第一屏
  • SkyLine简介
  • 算法基础学习笔记——④前缀和\差分\双指针\位运算
  • 【Linux系统基础快速入门详解】Linux下安装软件必知必会4种方法(yum,编译安装,rpm包,二进制方式)等详解
  • ASEMI代理长电可控硅BT136参数,BT136规格,BT136说明
  • 代码线程安全
  • Filebeat技术栈总结
  • 【App自动化测试】(十六)健壮性测试工具——Android Monkey
  • 实现第一个内核程序的Hello World
  • python基于协同过滤推荐算法的电影观后感推荐管理系统的设计
  • Vue——状态管理库Pinia
  • Linux:忘记root密码解决办法
  • Dockerfile(4) - RUN 指令详解
  • 一个完整的APP定制开发流程是怎样的?
  • 【数据结构】24王道考研笔记——线性表
  • 【Linux C】基于树莓派/香橙派的蓝牙服务端——支持多蓝牙设备接入
  • 鸿蒙App开发选择Java还是JavaScript?
  • 【Android】CountDownTimer的使用
  • Linux :: 【基础指令篇 :: 文件及目录操作:(1)】:: ls :: 查看指定目录下的内容
  • 【商品详情 +关键词搜索】API 接口系列
  • RabbitMQ学习-发布确认高级
  • 重载和内联函数
  • 从零学算法
  • 《Linux0.11源码解读》理解(四) head之重新设置IDT/GDT