Table of Contents

守护进程的实现

守护进程初始化函数

写一个测试代码

编译后生成可执行文件


守护进程的实现

守护进程初始化函数

#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>void init_deamon()
{int pid;int i;/*如果是父进程,结束*/if(pid=fork()){exit(0);}else if(pid<0){exit(1);}/* 是第一子进程,后台继续执行 * 第一自己成成为新的会话组长和进程组长*/setsid();/*与控制终端分离*/if(pid=fork()){exit(0);//结束第一子进程}else if (pid<0){exit(1);}/*** 是第二子进程,继续*   第二子进程不再是会话组长*   关闭打开的文件描述符*/for(i=0;i<NOFILE;++i){close(i);}/* 改变目录到/tmp */chdir("/tmp");/* 重设文件创建掩模 */umask(0);
}

写一个测试代码

#include <stdio.h>
#include <time.h>void init_deamon();int main()
{FILE *fp;time_t t;init_deamon();while(1){sleep(2);//每隔一分钟向test.log报告运行状态if((fp=fopen("test.log", "a")) >= 0){t = time(0);fprintf(fp, "I'm here at %s\n", asctime(localtime(&t)));fclose(fp);}}
}

编译后生成可执行文件

$ ./a.out
$ more /tmp/test.log
I'm here at Tue Feb 11 21:38:50 2020
I'm here at Tue Feb 11 21:38:52 2020$ more /tmp/test.log
I'm here at Tue Feb 11 21:38:50 2020
I'm here at Tue Feb 11 21:38:52 2020
I'm here at Tue Feb 11 21:38:54 2020

linux下C语言实现守护进程相关推荐

  1. ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)

    前言 在上篇文章中<ASP.NET Core Docker部署>中介绍了如何在 Docker 容器中部署我们的 asp.net core 应用程序,本篇主要是怎么样为我们在 Linux 或 ...

  2. Linux下的UDEV机制 / 守护进程

    一.Udev概念引入 udev是一个设备管理工具,udev以守护进程的形式运行,通过 侦听内核发出来的uevent来管 理 /dev目录下的设备文件. udev在 用户空间运行,而 不在内核空间 运行 ...

  3. c语言进程waitpid,Linux下C语言开发(进程控制编程——wait()、waitpid())

    wait()和wait()函数说明 wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或该进程接收到一个指定的信号为止.如果该父进程没有子进程或它的子进程已经结束,则 ...

  4. linux下qt检查进程是否存在,Linux下C语言实现查看进程是否存在

    基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在,怎么操作要看ps的参数了. 示例一 下面这个示例从网上找的, ...

  5. Linux下性能监控、守护进程与计划任务管理

    目录 一:监视系统进程(ps .top) 二:查看网络连接信息 (netstat) 三:文件进程.端口关联(lsof)

  6. Linux下C语言编程-进程的创建

    Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...

  7. linux父进程中显示子进程pid,请教linux下c语言函数fork父进程打印子进程的PID

    请教linux下c语言函数fork父进程打印子进程的PID 关注:296  答案:2  信息版本:手机版 解决时间 2019-01-14 04:55 雨不眠的下 2019-01-13 12:23 用于 ...

  8. linux下c语言调用mysql,Linux下C语言连接MySQL

    首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install l ...

  9. Linux下C语言开发(信号signal处理机制)

    信号signal处理是Linux程序的一个特色,用信号处理来模拟操作系统的中断功能,对于系统程序员来说是最好的一个选择了.同样信号处理也是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概 ...

最新文章

  1. Linux下两个进程可以同时打开同一个文件,这时如下描述错误的是:
  2. fastText中的子词嵌入和高效文本分类:简单高效性能好
  3. 理解C#值类型与引用类型(收藏)
  4. 【SpringCloud】Ribbon-实例
  5. (转)Eclipse_jee安装maven插件
  6. ShaderLab学习小结(十九)RenderToCubemap创建能反射周围环境的效果
  7. 父子组建传值_父子组件及兄弟组件传值demo
  8. excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel
  9. js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
  10. 吊打6599元的三星?买手机莫慌 三款国产新手机将发
  11. php服务层设计与实现的,PHP中service层怎么设计兼顾优雅和方便?
  12. 【C】C语言内存字节对齐
  13. 《图解HTTP》54~72Page 返回的HTTP状态码 与HTTP协作的Web服务器
  14. Pytroch+DGL+模型设置相关总结
  15. 20145209 《信息安全系统设计基础》第13周学习总结
  16. keil5 项目管理
  17. CTF工具-010editor
  18. 为kubernetes(k8s)单独配置kubectl工具
  19. canpro脚本_shell脚本实现-----自动巡检脚本.sh
  20. 水波纹特效怎么制作?这波水波纹特效拉动满满复古感

热门文章

  1. centos7 rpm 安装 rabbitMQ 最新版
  2. day22,ConfigParser,subprocess,xlrd三个模块
  3. java list对象按照某个属性去重
  4. 线程的创建 锁 Threading模块 事件 条件 定时器 队列 线程池 回调函数
  5. Servlet 与 CGI 的比较
  6. JDK API文档下载
  7. ASP.NET中Session简单原理图
  8. windows进入后自动注销处理
  9. postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
  10. html表格列平分行,CSS布局问题 , 如何实现一行多列div,类似于表格