Я пытаюсь повторить и изучить более сложные способы использования и варианты при разрезании деревьев с помощью вилок в джунглях C. Но по-дурацки я нахожу пример, который должен быть очень легким, поскольку я работал с вилками раньше и даже написал некоторый код, но я не могу понять это полностью.
Здесь:
main() {
if (fork() == 0) {
if (fork() == 0) {
printf("3");
}
else if ((wait(NULL)) > 0) {
printf("2");
}
}
else {
if (fork() == 0) {
printf("1");
exit(0);
}
if (fork() == 0) {
printf("4");
}
}
printf("0");
return 0;
}
Возможные решения:
- 3201040
- 3104200
- 1040302
- 4321000
- 4030201
- 1403020
где 2, 5 и 6 являются правильными ответами.
Прежде всего, не должно быть четырех нулей в выходе? Второе... Как вообще прийти к решению? Я делаю это на бумаге почти час, и я даже не понимаю, почему данное решение более корректно, чем ложные (за исключением nr3, поскольку он не может заканчиваться на 2, так как должен следовать 0).
Кто-нибудь с проверенными вилками может предложить хорошее объяснение?
EDIT:
Нашли это здесь смотрите pdf от 2009 года. Могут ли люди перестать делать сообщения об этом домашнем задании и на самом деле пытаться помочь? Если нет, найдите другие темы, чтобы провести время. Спасибо!