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

Posted 爱橙子的OK绷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下使用c++创建守护进程相关的知识,希望对你有一定的参考价值。

#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

以上是关于linux下使用c++创建守护进程的主要内容,如果未能解决你的问题,请参考以下文章

C++笔记--Linux编程(13)-守护进程-线程

linux 创建守护进程的相关知识

Android C++系列:Linux守护进程

[C++]-Linux中创建Daemon程序

ubuntu12.04下创建了一个守护进程,生成了一个可执行文件,如何让这个可执行文件开机自动运行?

Unix 域套接字 (C++) - 客户端崩溃服务器守护进程