账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    unix编程:守护进程的编程原则
    74
    0

    《unix环境高级编程》第13章关于守护进程的程序调用的一些代码的不理解
    代码中有注释的段落即是,谢谢指导

    void daemonize(const char* cmd){
        int i,fd0,fd1,fd2;
        pid_t pid;
        struct rlimit rl;
        struct sigaction sa;
    
        umask(0);
    
        if(getrlimit(RLIMIT_NOFILE,&rl)<0)
            err_quit("%s:can't get file limit ",cmd);
    
        if((pid=fork())<0)
            err_quit("%s:can't fork",cmd);
        else if(pid!=0)
            exit(0);
        setsid();
        sa.sa_handler=SIG_IGN;
        sigemptyset(&sa.sa_mask);
        sa.sa_flags=0;
        if(sigaction(SIGHUP,&sa,NULL)<0)
            err_quit("%s:can't ignore SIGHUP",cmd);
    
        if((pid=fork())<0)
            err_quit("%s:can't fork",cmd);
        else if(pid!=0)
            exit(0);
        
        if(chdir("/")<0)    
            err_quit("%s:can't chidir to /",cmd);
    
        if(rl.rlim_max==RLIM_INFINITY)    
            rl.rlim_max=1024;
        for(i=0;i<rl.rlim_max;i++)
            close(i);
    
        //打开/dev/null使其具有文件描述符0,1,2?????
        fd0=open("/dev/null",O_RDWR);
        fd1=dup(0);
        fd2=dup(0);
        
        openlog(cmd,LOG_CONS,LOG_DAEMON);
        if(fd0!=0||fd1!=1||fd2!=2){
            syslog(LOG_ERR,"unexpect file descriptors %d %d %d ",fd0,fd1,fd2);
            exit(1);
        }
    }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 没事我有雨陪 普通会员 1楼

      守护进程是一种需要频繁监控和管理的进程,它们经常被用作系统的后台服务。以下是一些在编写守护进程时需要遵循的编程原则:

      1. 确保守护进程有足够的资源:守护进程需要足够的资源来运行,包括内存、CPU和磁盘空间等。如果这些资源不足,守护进程可能会因为资源耗尽而崩溃。

      2. 使用适当的错误处理机制:守护进程可能需要处理各种异常情况,例如错误的系统调用、资源耗尽等。因此,你应该在守护进程中编写适当的错误处理机制,以确保程序的健壮性。

      3. 尽量减少守护进程的并发性:守护进程可能会与系统的其他进程发生交互,这可能会导致性能问题。因此,你应该尽量减少守护进程的并发性,以提高系统的性能。

      4. 使用适当的同步机制:守护进程可能需要与其他进程进行交互,这可能会导致竞争条件。因此,你应该使用适当的同步机制,以确保守护进程的正确执行。

      5. 保持守护进程的高效性:守护进程应该尽可能地保持高效性,以提高系统的性能。这可能包括优化代码、使用高效的算法和数据结构、避免不必要的计算等。

      6. 编写详细的文档:守护进程通常会被用作系统的一部分,因此你应该编写详细的文档,包括守护进程的工作原理、使用方法、异常处理机制等。

      7. 不要过度使用守护进程:守护进程可能会消耗大量的系统资源,因此你应该限制守护进程的使用,以避免系统资源的耗尽。

      以上就是在编写守护进程时需要遵循的一些编程原则。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部