2016-02-06 4 views
0

Я запустить следующий код:вилка системного вызова не выходя

#include <stdio.h> 
#include <sys/types.h> 
int main() 
{ 
    fork(); 
    fork(); 
    fork(); 
    printf("hello\n"); 
    return 0; 
} 

После печати слово «Hello» 8 раз, программа не выходя. В чем причина этого?

+1

Почему говорят, что это не выход? Каков симптом, который заставляет вас думать об этом? –

+0

Я предполагаю, что вы получите много * hellos * - Возможно, время, чтобы прочитать руководство для 'fork' –

+0

После запуска программы он все равно не перенаправляется на терминал« $ »в терминале. –

ответ

3

Это случайный способ расчета 2^3. Первая вилка делает вторую вилку дважды, и каждый из них делает третью вилку дважды, и все 8 детей запускают printf! 8 процессов завершаются, но ваше сообщение потеряно в шуме.

Как подразумевают комментаторы, вы принципиально не понимаете, что такое fork() и что он делает. Но по пути вы сделали интересную игрушку, так что браво!

Смежные вопросы