关闭

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

356人阅读 评论(0) 收藏 举报
分类:
#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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:267934次
    • 积分:6254
    • 等级:
    • 排名:第3957名
    • 原创:329篇
    • 转载:231篇
    • 译文:0篇
    • 评论:9条
    最新评论