守护进程-线程
标签:ret mask mon type cti set oid har stat
#include
#include
#include
#include
#include
#include string.h>
#include
#include
#include
#include #define _FILE_NAME_FORMAT_ "%s/log/mydaemon.%ld"
void touchfile(int num){
char* HomeDir=getenv("HOME");
char filename[256]={0};
sprintf(filename,_FILE_NAME_FORMAT_,HomeDir,time(NULL));
int fd=open(filename,O_RDWR|O_CREAT,0666);
if(fd0){
perror("open error!");
exit(1);
}
close(fd);
}
int main()
{
//创建子进程,父进程退出
pid_t pid=fork();
if(pid>0){
exit(1);
}
//当会长
setsid();
//设置掩码
umask(0);
//切换目录
chdir(getenv("HOME")); //
//关闭文件描述符
//执行核心逻辑
struct itimerval myit={{60,0},{1,0}};
setitimer(ITIMER_REAL,&myit,NULL);
struct sigaction act;
act.sa_flags=0;
sigemptyset(&act.sa_mask);
act.sa_handler=touchfile;
sigaction(SIGALRM,&act,NULL);
while(1){
//每隔一分钟在/home/.../log下创建文件
sleep(1);
}
//推出
return 0;
}
如果不sleep,则进程退出,创建的线程无法执行。
可以用pthread_exit()退出一个线程
“I will be out”不会执行。exit整个进程都退出了。
(5s后打印第二句,阻塞等待)
守护进程-线程
标签:ret mask mon type cti set oid har stat
原文地址:https://www.cnblogs.com/FEIIEF/p/12919846.html
文章来自:
搜素材网的
编程语言模块,转载请注明文章出处。
文章标题:
守护进程-线程
文章链接:http://soscw.com/index.php/essay/43024.html
评论