- 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楼
守护进程是一种需要频繁监控和管理的进程,它们经常被用作系统的后台服务。以下是一些在编写守护进程时需要遵循的编程原则:
-
确保守护进程有足够的资源:守护进程需要足够的资源来运行,包括内存、CPU和磁盘空间等。如果这些资源不足,守护进程可能会因为资源耗尽而崩溃。
-
使用适当的错误处理机制:守护进程可能需要处理各种异常情况,例如错误的系统调用、资源耗尽等。因此,你应该在守护进程中编写适当的错误处理机制,以确保程序的健壮性。
-
尽量减少守护进程的并发性:守护进程可能会与系统的其他进程发生交互,这可能会导致性能问题。因此,你应该尽量减少守护进程的并发性,以提高系统的性能。
-
使用适当的同步机制:守护进程可能需要与其他进程进行交互,这可能会导致竞争条件。因此,你应该使用适当的同步机制,以确保守护进程的正确执行。
-
保持守护进程的高效性:守护进程应该尽可能地保持高效性,以提高系统的性能。这可能包括优化代码、使用高效的算法和数据结构、避免不必要的计算等。
-
编写详细的文档:守护进程通常会被用作系统的一部分,因此你应该编写详细的文档,包括守护进程的工作原理、使用方法、异常处理机制等。
-
不要过度使用守护进程:守护进程可能会消耗大量的系统资源,因此你应该限制守护进程的使用,以避免系统资源的耗尽。
以上就是在编写守护进程时需要遵循的一些编程原则。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

