Я пытаюсь повторять и изучать более продвинутые варианты использования и опции при рубке деревьев вилками в джунглях 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 года. Могут ли теперь люди перестать публиковать сообщения о том, что это домашнее задание, и действительно пытаются помочь? Если нет, пожалуйста, найдите другие темы, чтобы провести время. Спасибо!