守护进程-_柯小诺的博客-程序员秘密_守护进程

技术标签: 算法  Linux笔记  排序算法  数据结构  

守护进程

运行周期长,在后台运行,不和用户交互

会话:会话是一个或多个进程组的集合。

会话首进程:创建此会话的进程,会话首进程的进程ID是会话ID,首进程是其所在的进程组的组长进程,因为在其创建一个会话的同时已经变成了一个组长进程。

进程组:每个进程属于一个进程组,进程组是一个或多个进程的集合,每个进程有一个唯一的进程组ID。

组长进程:每个进程组可以有个组长进程,组长进程的ID就是进程组的ID;组长进程可以创建进程组以及该组中的进程;进程组的创建从第一个进程(组长进程)加入开始;进程组的组号取第一个加入组的进程(组长进程)编号;

1、守护进程本质其实是一个孤儿进程

2、守护进程自成进程组,自成会话

3、守护进程与终端无关

守护进程和后台进程的区别:

1、后台进程受用户登录和注销的影响,而守护进程不受用户登录和注销的影响

2、守护进程已经完全脱离终端控制台了,而后台程序并未完全脱离终端(在终端未关闭前还是会往终端输出结果)

3、守护进程的会话组和当前目录,文件描述符都是独立的。后台运行只是终端进行了一次fork,让程序在后台执行,这些都没改变

编程流程:

fork() 退出父进程
setsid()
fork() 退出父进程
chdir("/")
umask(0)
close()
处理僵死进程
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <assert.h>
#include <time.h>
#include <sys/stat.h>

int main()
{
    
    pid_t pid=fork();
    if(pid!=0)
    {
    
        exit(0);
    }
    
    setsid();
    
    pid_t pid=fork();
    if(pid!=0)
    {
    
        exit(0);
    }
    
    chdir("/");
    
    umask(0);
    
    int maxfd=getdtabesize();
    for(int i=0;i<maxfd;i++)
    {
    
        close(i);
    }
    
    while(1)
    {
    
        FILE *fp=fopen("/tmp/c117d.log","a");
        if(fp==NULL)
        {
    
            break;
        }
        
        time_t tv;
        time(&tv);
        
        fprintf(fp,"Time is %sn",asctime(localtime(&tv)));
        
        fclose(fp);
        
        sleep(5);
    }
}

快速查看日志文件:tail -f <文件名>

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_57656148/article/details/123335935

智能推荐

8*8LED点阵横向滚动显示_ambitious_0_0_的博客-程序员秘密

#includesbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code image[30][8] = { {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, //动画帧1{0xFF,0x7F,0xFF,0

oracle 的 import,ORACLE import工具参数_学习中的小包的博客-程序员秘密

import工具windows中文界面:C:\Documents and Settings\yeyj&gt;imp -helpImport: Release 10.2.0.1.0 - Production on星期二12月20 13:11:20 2011Copyright (c) 1982, 2005, Oracle.All rights reserved.通过输入IMP命令和您的用户名/口令,导...

python 爬虫基础 Xpath lxml中etree.html和etree.parse有什么区别_RooKiChen的博客-程序员秘密_etree.parse和etree.html

1.etree.parse直接接受一个文档,按照文档结构解析(本地文件)test.html:&lt;html&gt; &lt;body&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http//www.baidu.com"&gt;百度&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http//www.sougou.com"&gt;搜狗&lt;/a&gt;&lt;/l

# Cobalt Strike:使用已知的私钥解密流量-Part 1_爱你'非我莫属。的博客-程序员秘密

博客系列:Cobalt Strike:流量解密Cobalt Strike:使用已知的私钥解密流量-Part 1(当前部分)Cobalt Strike: 使用已知的私钥解密流量 - Part 2Cobalt Strike: 使用进程内存解密流量 - Part 3Cobalt Steike: 解密被掩盖的流量 - Part 4Cobalt Strike: 解密DNS流量 - Part 5我们发现6个流氓软件Cobalt Strike的私钥,可以用来将C2网络流量进行解密Co

数据结构排序-------插入排序(C,Java实现)_楠哥学IT的博客-程序员秘密

 1、插入排序简要概述  它的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 2、插入排序图解  3、代码实现public class test { public static void main(String[] args) { int array[] = new

NFS共享存储服务安装_huryer的博客-程序员秘密_安装nfs网络共享服务的步骤

NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源NAS存储: NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在Centos 7系统中,需要安装nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。nfs端口:2049R

随便推点

实时流媒体编程基于Linux环境开发_叶广明_微信ye_guangming的博客-程序员秘密

一、流媒体简介随着Internet的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡。目前在网络上传输音频/视频(Audio/Video,简称A/V)等多媒体文件时,基本上只有下载和流式传输两种选择。通常说来,A/V文件占据的存储空间都比较大,在带宽受限的网络环境中下载可能要耗费数分钟甚至数小时,所以这种处理方法的延迟很大。如果换用流式传输的话,声音、

python 使用pip install_Linux下python pip install失败_weixin_39864101的博客-程序员秘密

问题:安装包出现Retrying (Retry(total=4, connect=None, read=None,redirect=None, status=None)) after connection broken by'ConnectTimeoutError解决办法:pip install selectivesearch -i http://pypi.douban.com/simple --...

3dsmax用法线贴图制作低面数模型_绿灯伴书影的博客-程序员秘密

有时为使模型更精细,只能增加模型的面数。从poser中直接输出的角色模型面数就不少。这样的高精度模型一个两个还可以,若无限的添加下去,再高配置的电脑也会磨洋工,慢得不得了。有没有即能保持模型精细,又可让模型面数保持最低的办法么?有,Normal Map(法线贴图)就是其中之一。这种贴图能保持高精度模型的凹凸信息,也就是模型所谓的细节部分。大概的流程是先复制高精度模型,再用多精度修改器命令将

前端每日实战:36# 视频演示如何利用 CSS 动画原理,在页面上表现日蚀现象_weixin_34342207的博客-程序员秘密

效果预览按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。https://codepen.io/comehope/pen/OELvrK可交互视频教程此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。请用 chrome, safari, edge 打开观看。https://scrimba.com/p/...

ionic ion-tab图标修改, 自定义tab图标_weixin_34220834的博客-程序员秘密

遇到需要自定义tab图标很简单, 只需要自定义相应的css就可以了, 这里要注意的是如何调整背景图片的大小.&amp;lt;ion-view hide-back-button=&quot;false&quot;&amp;gt; &amp;lt;style&amp;gt; .ion-ios-home0 { background: url(img/home0.png) no-repeat 50% 50%; ...

【转】使用红雪越狱iPhone 4.3.3教程_Surenon的博客-程序员秘密

转自:http://apple.178.com/201105/98676561502.htmlDev-Team已经发布了红雪0.9.6rc19完美越狱工具。下面以Windows版为例附上图文教程:注意事项为了防止万一,请您使用官方固件恢复再按照本教程操作(如果您的4.3.3没有进行越狱可以忽略这一步)。官方固件恢复教程 越狱需要使用4.3.3最新固件,固件下载大全...