2016-10-28 4 views
-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つのプログラムが同等であること(「同じことをする」)が間違っていることを前提としています。 2つのプログラムには違いがあります。オプション1では、 'run_as_daemon'が' false'と評価された場合にのみ 'do_task()'が呼び出されます。子プロセスは 'do_task()'への呼び出しを起動しません。オプション2では、 'run_as_daemon'が評価されるものにかかわらず' do_task() 'が呼び出されます。 – selbie

+1

個人的に私は最初のオプションを使用していました。それは完全に管理されており、「読者」が理解しやすいものです。 – LPs

+0

その場合も 'pid == 0'と' exit'を管理して、等価な解を作ります。 – LPs

答えて

1

両方ともこの状況に該当しますが、最初のオプションは、いずれかのブランチの1つを取ることができ、run_as_demonならdo_task()にドロップできないことを暗示しているので、 = 0

関連する問題