-1
라고 말하면 하나는 데몬을 작성합니다. 두 가지 옵션을 가지고 있으며, 선택할 수있는 알 수 없습니다 :두 개의 분기가있을 때 하나의 구조체 코드로 분기해야하는 경우
옵션 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 */
}
}
옵션 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에서'do_task()'는'run_as_daemon'가'false'로 평가 될 때만 호출됩니다. 자식 프로세스는'do_task()'에 대한 호출을 호출하지 않을 것이다. 옵션 2에서'run_as_daemon'이 무엇을 평가하는지에 관계없이'do_task()'가 호출된다. – selbie
개인적으로 첫 번째 옵션을 사용했습니다. 그것은 "독자"가 완전히 관리하고 더 잘 이해할 수 있습니다. – LPs
그 경우'pid == 0'과'exit'도 관리해야합니다. – LPs