linux下使用c++创建守护进程

原创 2017年01月03日 11:50:59
#include<stdio.h>                                                                                                                                  
#include<stdlib.h>
#include<string>
#include<iostream>
#include<fcntl.h>
#include<unistd.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<sys/stat.h>
using namespace std;
#define MAXFILE 65535
//实现一个守护进程:每隔5秒在/tmp/dameon.log中写入一句话
int main(){
    pid_t pc; 
    int i,fd,len;
    //char *buf="this is a Dameon\n";
    string buf="this is a Dameon\n";
    //len = strlen(buf);
    len=buf.size();
    pc = fork(); /*第一步:创建子进程*/
    if(pc<0){
        printf("error fork\n");
        exit(1);
    }else if(pc>0){//父进程退出
        exit(0);
    }  
    setsid(); /*第二步:在子进程中创建新会话*/
    char szPath[1024];
    if(getcwd(szPath, sizeof(szPath)) == NULL)
    {//获得当前路径
        perror("getcwd");
        exit(1);
    }  
    //printf("current working directory : %s\n", szPath);
    //chdir("/"); /*第三步:改变当前目录为根目录*/
    chdir(szPath);
    umask(0); /*第四步:重设文件权限掩码*/
    for(i=0;i<MAXFILE;i++) /*第五步:关闭文件描述符*/                                                                                               
        close(i);
    while(1){
        //if((fd=open("/tmp/dameon.txt",O_CREAT|O_WRONLY|O_APPEND,0600))<0){
        if((fd=open("dameon.txt",O_CREAT|O_WRONLY|O_APPEND,0600))<0){
            perror("open");
            exit(1);
        }   
        //write(fd,buf,len+1);
        write(fd,buf.c_str(),len);//写入文件
        close(fd);
        sleep(5);
    }  
    return 0;
}   

相关命令:

ps aux | grep 文件名
kill -9 进程ID
版权声明:本文为博主原创文章,未经博主允许不得转载。

LinuxC/C++编程(7)—守护进程

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任 务或等待处理某些发生的事件。         守护进程是一种很有用的进程。Linux的大多数服务器就是用守护...
  • Lyintong
  • Lyintong
  • 2016年05月27日 15:33
  • 369

C实现Linux守护进程

1、概念 守护进程是运行在后台,并且一直在运行的一种特殊进程。它独立于控制终端并且周期性的执行某种任务或等待处理某些事。 Linux的大多数服务器都是用守护进程实现的。 2、Linux的...
  • a600423444
  • a600423444
  • 2011年11月10日 22:57
  • 5394

2017模拟面试题库 —— Linux系统相关

Q: 请描述一下多线程怎么实现生产者消费者模型 A:
  • chen892704067
  • chen892704067
  • 2017年05月30日 19:52
  • 851

Linux下一个简单守护进程的实现 (Daemon)

2012-03-17 wcdj 在Linux/UNIX系统引导的时候会开启很多服务,这些服务称为守护进程(也叫Daemon进程)。守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些...
  • delphiwcdj
  • delphiwcdj
  • 2012年03月17日 16:17
  • 19675

windows c++程序员开始用linux编程(二)创建新进程

在windows下,创建一个进程可以用CreateProcess,它将启动另一个程序;而在linux下,创建一个进程可以用fork,顾名思义就是“分叉”,调用fork就像孙悟空叫一声“变”,于是出现了...
  • yeyuboy
  • yeyuboy
  • 2007年02月27日 10:53
  • 2580

CentOS7环境下ceph J版安装部署

一、环境准备 安装环境为VMWare Workstation虚拟机 1.准备5台虚拟机 ceph-deploy:作为管理节点,后续的ceph-deploy工具都在该节点上进行操作。 ceph-...
  • dylloveyou
  • dylloveyou
  • 2018年01月13日 22:20
  • 54

Linux入门基础教程

1. 1      Linux操作系统简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UN...
  • qq_32331997
  • qq_32331997
  • 2017年11月25日 20:01
  • 112

Linux下C++多进程应用开发

转自:http://blog.csdn.net/wangfengwf/article/details/11581487 =====================================...
  • u012398362
  • u012398362
  • 2016年02月18日 15:31
  • 975

c++ 进程守护之打不死的小强

//进程守护之打不死的小强 云守护 #include #include #include #include "PSAPI.H" #pragma comment( lib, "P...
  • earbao
  • earbao
  • 2013年03月17日 14:59
  • 4262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下使用c++创建守护进程
举报原因:
原因补充:

(最多只允许输入30个字)