步骤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)