-1
と言うと、私はデーモンを作成します。 には2つのオプションがあり、から選択するかわからないん分岐する2つの分岐を持つときに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 */
}
私は、彼らが同じことを行うことを理解しますが保守や読み込みを容易にするためにコードを構造化することを知りたい
これら2つのプログラムが同等であること(「同じことをする」)が間違っていることを前提としています。 2つのプログラムには違いがあります。オプション1では、 'run_as_daemon'が' false'と評価された場合にのみ 'do_task()'が呼び出されます。子プロセスは 'do_task()'への呼び出しを起動しません。オプション2では、 'run_as_daemon'が評価されるものにかかわらず' do_task() 'が呼び出されます。 – selbie
個人的に私は最初のオプションを使用していました。それは完全に管理されており、「読者」が理解しやすいものです。 – LPs
その場合も 'pid == 0'と' exit'を管理して、等価な解を作ります。 – LPs