`
kenby
  • 浏览: 716818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

守护进程的实现

阅读更多

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源代码实现守护进程(进程免杀) python 编 写 守 护 进 程 实 现 当 python 进 程 被 杀 后 重 启 进 程 的 源 代 码

    守护进程,背靠背c++实现

    守护进程,通过守护一个进程进行对该进程的监控,当这个进程,异常停止,守护进程则启动这个进程。同时守护进程有防杀功能,当被恶意程序杀死后,会被另一进程启动,这两个进程互相监控.

    Windows使用bat批处理实现守护进程脚本.bat

    Windows使用bat批处理实现守护进程脚本

    python daemon守护进程实现

    主要介绍了python daemon守护进程实现,需要的朋友可以参考下

    Python守护进程实现过程详解

    这篇文章主要介绍了Python守护进程实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 如果你设置一个线程为守护线程,就表示你在说这个线程是不重要...

    GO语言实现的后台服务守护进程

    说明:本程序主要是实现Win32后台服务进程24小时监控, 当服务进程宕机后自动重启,并记录日志。 */ func main() { // 读取配置文件 iniConfig := new(util.Config) iniConfig.InitConfig("./server_daemon.ini...

    linux守护进程C实现

    该文档说明在linux下实现守护进程,代码简单易懂,思路清楚。

    android 基于aidl实现的守护进程

    android 基于aidl实现的守护进程 android 基于aidl实现的守护进程

    java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm

    java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm java -jar heshenboot.jar start|stop

    用qt实现的程序守护进程程序

    主要功能: 可设置检测的程序名称。 可设置udp通信端口。 可设置超时次数。 自动记录已重启次数。 自动记录最后一次重启时间。 是否需要重新刷新桌面。 可重置当前重启次数和最后重启时间。 自动隐藏的托盘运行或者...

    开发Linux操作系统后台服务进程详解

    Linux的大多数服务器就是用守护进程实现的。守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同, 造成不同 Unix环境下守护进程的编程规则并不一致。需要注意,照搬某些书上的规则(特别是BSD...

    Python 编写windows守护进程程序

    项目中使用python写一个监控程序,每隔5秒监控目录,发现文件就...为了谨防程序崩溃,特别编写一个守护进程程序,时刻监控程序是否崩溃并重新启动。 博文: http://blog.csdn.net/alex_bean/article/details/77923178

    c#实现的守护进程,包含代码

    c#实现的守护进程,包含代码 监控进程,如果进程关闭,自动启动进程。保证进程持续运行。

    Linux编程之《守护进程》

    Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d是Daemon的意思)。  由于在Linux中,每一个系统与...

    Linux守护进程的编程实现

    Linux的大多数server是用守护进程实现的。比方,Internetserverinetd,Webserverhttpd等。同一时候,守护进程完毕很多系统任务。比方,作业规划进程crond,打印进程lpd等。  守护进程的编程本身并不复杂,复杂的是...

    守护进程(java)

    “守护进程”本身是个操作系统的概念,java中没有进程,只有线程概念。一般是通过线程实现守护进程的。

    Android 守护进程的实现方式

    要我们的应用永远活在用户的手机后台不被杀死 —— 这都是扯淡; 能做的只是通过各种手段尽量让...要做到后台进程保活,我们需要做到两方便: 1.提高进程优先级,降低被回收或杀死概率; 2.在进程被干掉后,进行拉起。

    Windows下设置守护进程JAR包挂掉自动重启,bat文件(已完美测试)

    这个bat脚本资源可以在Windows环境下实现Java程序的守护进程和自动重启。它通过一个循环监控Java程序进程,如果检测到程序异常退出,会自动重启程序。同时具有可配置的重启次数和重启间隔时间。 这个小巧但实用的bat...

Global site tag (gtag.js) - Google Analytics