您的位置:首页 > 其它

ubuntu下编写开机自启守护进程,并记录进程信息到日志文件

2013-04-15 18:25 288 查看

步骤1:编写守护进程

void init(){
pid_t pid;
int i;
pid=fork();        //创建第一子进程
if(pid<0) exit(1);//创建失败退出
if(pid>0) exit(0);//父进程退出
setsid();         //第一子进程成为领头进程,脱离终端
pid=fork();   //第一子进程生成第二子进程
if(pid<0) exit(1);//创建失败退出
if(pid>0) exit(0);//第一子进程退出
chdir("/home/ling/文档");//切换目录
umask(0);               //改变文件创建掩码
for(i=0;i<NOFILE;i++)  //关闭文件流
close(i);
}

注意这里chdir函数中的路径就是日志文件的保存路径。

步骤2:记录进程信息到日志文件

void main(){
char buf[256];
FILE *fp,*p;
init();
while(1){
sleep(30);                                           //每30s记录一次
if((fp=fopen(“test.log”,“a”))>=0){                   //打开文件test.log,参数a表示以追加的形式打开
p=popen(“ps-eopid,user,cmd,start_time,etime”,“r”);//将指针p连接到ps命令的标准输出
while(fgets(buf,sizeof(buf),p)!=0)                 //获取输出内容并保存在buf中
fprintf(fp,“%s\n”,buf);                        //以字符串的形式将buf中的内容写到fp指定的文件中
pclose(p);
}
fclose(fp);
}
}

步骤3:编译运行,设置开机启动

编译程序

命令行下执行:

gccprotect.c –o protect

得到可执行文件protect,再执行:

./protect

即可运行程序。

开机启动

安装sysv-rc-conf:

sudo apt-get installsysv-rc-conf

执行:

sudosysv-rc-conf 这里是你的程序名称 on

到这里就可以的,但重启之后你在终端会找不到这个程序的信息,但它其实在后台运行。

设置开机启动的另一种方法就是直接把启动命令写到/etc/rc.local文件里面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐