linux下C语言实现守护进程
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语言实现守护进程相关推荐
- ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
前言 在上篇文章中<ASP.NET Core Docker部署>中介绍了如何在 Docker 容器中部署我们的 asp.net core 应用程序,本篇主要是怎么样为我们在 Linux 或 ...
- Linux下的UDEV机制 / 守护进程
一.Udev概念引入 udev是一个设备管理工具,udev以守护进程的形式运行,通过 侦听内核发出来的uevent来管 理 /dev目录下的设备文件. udev在 用户空间运行,而 不在内核空间 运行 ...
- c语言进程waitpid,Linux下C语言开发(进程控制编程——wait()、waitpid())
wait()和wait()函数说明 wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或该进程接收到一个指定的信号为止.如果该父进程没有子进程或它的子进程已经结束,则 ...
- linux下qt检查进程是否存在,Linux下C语言实现查看进程是否存在
基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在,怎么操作要看ps的参数了. 示例一 下面这个示例从网上找的, ...
- Linux下性能监控、守护进程与计划任务管理
目录 一:监视系统进程(ps .top) 二:查看网络连接信息 (netstat) 三:文件进程.端口关联(lsof)
- Linux下C语言编程-进程的创建
Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...
- linux父进程中显示子进程pid,请教linux下c语言函数fork父进程打印子进程的PID
请教linux下c语言函数fork父进程打印子进程的PID 关注:296 答案:2 信息版本:手机版 解决时间 2019-01-14 04:55 雨不眠的下 2019-01-13 12:23 用于 ...
- linux下c语言调用mysql,Linux下C语言连接MySQL
首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install l ...
- Linux下C语言开发(信号signal处理机制)
信号signal处理是Linux程序的一个特色,用信号处理来模拟操作系统的中断功能,对于系统程序员来说是最好的一个选择了.同样信号处理也是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概 ...
最新文章
- Linux下两个进程可以同时打开同一个文件,这时如下描述错误的是:
- fastText中的子词嵌入和高效文本分类:简单高效性能好
- 理解C#值类型与引用类型(收藏)
- 【SpringCloud】Ribbon-实例
- (转)Eclipse_jee安装maven插件
- ShaderLab学习小结(十九)RenderToCubemap创建能反射周围环境的效果
- 父子组建传值_父子组件及兄弟组件传值demo
- excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel
- js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
- 吊打6599元的三星?买手机莫慌 三款国产新手机将发
- php服务层设计与实现的,PHP中service层怎么设计兼顾优雅和方便?
- 【C】C语言内存字节对齐
- 《图解HTTP》54~72Page 返回的HTTP状态码 与HTTP协作的Web服务器
- Pytroch+DGL+模型设置相关总结
- 20145209 《信息安全系统设计基础》第13周学习总结
- keil5 项目管理
- CTF工具-010editor
- 为kubernetes(k8s)单独配置kubectl工具
- canpro脚本_shell脚本实现-----自动巡检脚本.sh
- 水波纹特效怎么制作?这波水波纹特效拉动满满复古感
热门文章
- centos7 rpm 安装 rabbitMQ 最新版
- day22,ConfigParser,subprocess,xlrd三个模块
- java list对象按照某个属性去重
- 线程的创建 锁 Threading模块 事件 条件 定时器 队列 线程池 回调函数
- Servlet 与 CGI 的比较
- JDK API文档下载
- ASP.NET中Session简单原理图
- windows进入后自动注销处理
- postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
- html表格列平分行,CSS布局问题 , 如何实现一行多列div,类似于表格