-1
说,我写一个守护进程。 有两个选项,不知道该选择:一个结构代码应该如何在有两个分支时分支到
OPTION 1:
int
main(void)
{
/* Do something with run_as_daemon variable */
if (run_as_daemon) {
pid = fork();
if (pid < 0)
err_exit("Could not fork to create daemon");
if (pid > 0)
exit(0); /* exit if parent */
} else {
do_task(); /* Perform some IO using user commands */
}
}
OPTION 2:
int
main(void)
{
if (run_as_daemon) {
pid = fork();
if (pid < 0)
err_exit("Could not fork to create daemon");
if (pid > 0)
exit(0); /* exit if parent */
}
do_task(); /* Perform some IO using user commands */
}
据我所知,他们做同样的事情,但想知道更好地构造代码以便更易于维护和阅读。
你的前提下,这两个方案是等价的(“做同样的事情”)不正确。这两个程序之间有区别。在选项1中,只有'run_as_daemon'评估为'false'时才会调用'do_task()'。子进程不会调用对'do_task()'的调用。在选项2中,无论“run_as_daemon”的计算结果如何,都会调用do_task()。 – selbie
我个人用过第一个选项。它是完全管理的,更容易被“读者”理解。 – LPs
你应该管理'PID == 0'和'exit'那种情况下,使相当于 – LPs