Linux 下创建守护进程
来源:互联网 发布:淘宝李宁官方折扣店 编辑:程序博客网 时间:2024/05/18 01:51
1,创建子进程,父进程退出
pid = fork();
if (pid >0)
...{
exit(0);
}
if (pid >0)
...{
exit(0);
}
2. 在子进程中创建新会话
使用setsid
主要是使进程摆脱原会话的控制,摆脱原进程组的控制,摆脱原控制终端的控制。
3.改变当前目录为根目录
使用fork创建的子进程继承了父进程的当前工作目录,由于进程运行过程中,当前目录所在的文件系统(比如/mnt/usb等)是不能卸载的,这对以后使用会造成很多不便,比如系统由于某种原因需要进入单用户模式)因此,通常将“/”做为守护进程的当前工作目录 使用chdir
4.重新设置文件权限演码
umask(0)
5.关闭文件描述符
for (i=0; i<MAXFILE;i++){
close(i);
}
详细代码
/**//**
* @file: daemon.c
* @brief: daemon
* @author: wangbing
* @date: 2007-11-9
* @version: 1.0
*/
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/time.h>
int daemon_start(void)
...{
int i;
pid_t pid;
if( (pid = fork()) < 0)
...{
return(-1);
}
else if (pid!=0)
...{
exit(0);
}
setsid();
chdir("/");
umask(0):
for (i=0; i<MAXFILE; i++)
...{
close(i);
}
return 0;
}
* @file: daemon.c
* @brief: daemon
* @author: wangbing
* @date: 2007-11-9
* @version: 1.0
*/
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/time.h>
int daemon_start(void)
...{
int i;
pid_t pid;
if( (pid = fork()) < 0)
...{
return(-1);
}
else if (pid!=0)
...{
exit(0);
}
setsid();
chdir("/");
umask(0):
for (i=0; i<MAXFILE; i++)
...{
close(i);
}
return 0;
}
- Linux 下创建守护进程
- Linux下守护进程的创建
- Linux下守护进程的创建
- Linux下守护进程的创建过程
- Linux下守护进程的创建例子
- linux下守护进程创建步骤解剖
- linux下创建后台守护进程实例
- Linux 下,如何创建守护进程
- Linux 下,如何创建守护进程
- linux下创建守护进程(daemon process)
- linux下创建守护进程(daemon process)
- linux下创建守护进程01
- Linux 下,如何创建守护进程
- linux下使用c++创建守护进程
- linux下如何创建守护进程
- linux创建守护进程
- Linux 守护进程创建
- Linux创建守护进程
- Introduction to COM - What It Is and How to Use It.
- 水煮TCPMP
- 程序员面试题精选(37):判断字符串是否是回文字符串或者是否含有回文字符子串
- JSP Struts之HTML标签库详解
- 阻碍GIS产业发展的三大问题
- Linux 下创建守护进程
- 程序员面试题精选(38):2008百度校园招聘的一道笔试题
- Windows API一日一练(73)GetVersionEx函数
- 根据登陆显示相应状态 --自定义控件
- 也做技术
- 程序员面试题精选(39):一道autodesk笔试题求解
- java继承中的初始化循序
- 程序员面试题精选(40):一道SPSS笔试题求解
- 使用VMware将Linux装在物理硬盘上,开机即可进入Linux