6个步骤
步骤1:创建子进程,杀死父进程,目的是为了步骤2中调用setsid可以成功。
步骤2:创建新会话,并自任组长。目的是脱离控制终端
会话组长调用 setsid 会失败,步骤1创建的子进程必然不是会话组长,
这就保证了 setsid 可以成功。
步骤3:修改工作目录为根目录。
当进程没有结束时,工作目录是不能卸载的,为了防止这种情况,
把工作目录设为根目录。因为根目录一般是不用卸载的。
步骤4:修改文件权限掩码,很多情况下,守护进程会创建很多临时文件,
出于安全性考虑,往往不希望这些文件被其他用户查看,这时可以
使用 umask 函数修改文件权限,创建掩码的取值,以满足守护进程的要求。
步骤5:关闭标准输入输出
int daemon_me()
{
int fd;
/* 步骤1: 创建子进程,杀死父进程 */
switch (fork()) {
case -1:
return -1;
case 0:
break;
default:
exit(0);
}
/* 步骤2: 创建新会话,自任组长 */
if (setsid() == -1) {
return -1;
}
/* 步骤3: 修改工作目录 */
chdir("/");
/* 步骤4: 将文件权限掩码设为0 */
umask(0);
/* 步骤5: 关闭标准输入输出 */
fd = open("/dev/null", O_RDWR);
if (fd == -1) {
return -1;
}
if (dup2(fd, STDIN_FILENO) == -1) {
return -1;
}
if (dup2(fd, STDOUT_FILENO) == -1) {
return -1;
}
if (dup2(fd, STDERR_FILENO) == -1) {
return -1;
}
if (fd > STDERR_FILENO) {
if (close(fd) == -1) {
return -1;
}
}
return 0;
}
分享到:
相关推荐
python源代码实现守护进程(进程免杀) python 编 写 守 护 进 程 实 现 当 python 进 程 被 杀 后 重 启 进 程 的 源 代 码
守护进程,通过守护一个进程进行对该进程的监控,当这个进程,异常停止,守护进程则启动这个进程。同时守护进程有防杀功能,当被恶意程序杀死后,会被另一进程启动,这两个进程互相监控.
Windows使用bat批处理实现守护进程脚本
主要介绍了python daemon守护进程实现,需要的朋友可以参考下
这篇文章主要介绍了Python守护进程实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 如果你设置一个线程为守护线程,就表示你在说这个线程是不重要...
说明:本程序主要是实现Win32后台服务进程24小时监控, 当服务进程宕机后自动重启,并记录日志。 */ func main() { // 读取配置文件 iniConfig := new(util.Config) iniConfig.InitConfig("./server_daemon.ini...
该文档说明在linux下实现守护进程,代码简单易懂,思路清楚。
android 基于aidl实现的守护进程 android 基于aidl实现的守护进程
java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm java -jar heshenboot.jar start|stop
主要功能: 可设置检测的程序名称。 可设置udp通信端口。 可设置超时次数。 自动记录已重启次数。 自动记录最后一次重启时间。 是否需要重新刷新桌面。 可重置当前重启次数和最后重启时间。 自动隐藏的托盘运行或者...
Linux的大多数服务器就是用守护进程实现的。守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同, 造成不同 Unix环境下守护进程的编程规则并不一致。需要注意,照搬某些书上的规则(特别是BSD...
项目中使用python写一个监控程序,每隔5秒监控目录,发现文件就...为了谨防程序崩溃,特别编写一个守护进程程序,时刻监控程序是否崩溃并重新启动。 博文: http://blog.csdn.net/alex_bean/article/details/77923178
c#实现的守护进程,包含代码 监控进程,如果进程关闭,自动启动进程。保证进程持续运行。
Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d是Daemon的意思)。 由于在Linux中,每一个系统与...
Linux的大多数server是用守护进程实现的。比方,Internetserverinetd,Webserverhttpd等。同一时候,守护进程完毕很多系统任务。比方,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不复杂,复杂的是...
“守护进程”本身是个操作系统的概念,java中没有进程,只有线程概念。一般是通过线程实现守护进程的。
要我们的应用永远活在用户的手机后台不被杀死 —— 这都是扯淡; 能做的只是通过各种手段尽量让...要做到后台进程保活,我们需要做到两方便: 1.提高进程优先级,降低被回收或杀死概率; 2.在进程被干掉后,进行拉起。
这个bat脚本资源可以在Windows环境下实现Java程序的守护进程和自动重启。它通过一个循环监控Java程序进程,如果检测到程序异常退出,会自动重启程序。同时具有可配置的重启次数和重启间隔时间。 这个小巧但实用的bat...