2017-09-23 90 views
0

我不明白爲什麼switch語句包含case 0:default:爲什麼此代碼包含情況0和默認值?

int main(void) 
{ 
    pid_t pid = create_process(); 
    switch (pid) 
    { 
     case -1: 
      perror("fork"); 
      return EXIT_FAILURE; 
      break; 
     case 0: 
      child_process(); 
      break; 
     default: 
      father_process(pid); 
      break; 
    } 
    return EXIT_SUCCESS; 
} 
+1

返回語句後不需要'bre​​ak' – stackptr

+1

我在linux手冊頁中找不到'create_process',但是我假設'pid'可以是任何值並標識系統中進程的系統pid,因此執行'default'。 –

+0

請看[問]。你知道它究竟執行了兩種情況嗎? – glennsl

回答

2

由於您正在創建一個新進程,代碼將兩次執行switch語句(在兩個不同的進程中)。

假設您在create_process()中使用fork(),在父進程中,pid變量包含子PID(嚴格爲正)。因此,交換機入口點是默認的。 在子進程中,pid爲0,因此入口點爲0。

相關問題