¿Cómo evalúo estas llamadas de fork () con && y || Operadores en C?

Tengo a continuación un código en C que utiliza la llamada al sistema fork() , pero estoy confundido: ¿cómo puedo hacerlo?
resolviendo lo que hace:

 int main() { fork(); fork() || fork() && fork(); fork(); printf("ämit"); } 

fork() && fork() || fork(); Se evalúa algo como esto a continuación:

  fork() / \ 0/ \>0 || fork() && fork() /\ / \ / \ 0/ \>0 * * || fork() * / \ * * 

Necesito el mismo tipo de árbol para el fork() || fork() && fork() fork() || fork() && fork() . ¿Alguien puede decirme cómo debo lograrlo?

|| tiene menor prioridad que && , y esos operadores realizan un cortocircuito después de la evaluación del primer operando si contiene datos suficientes ( || cortocircuitos si el primer operando es verdadero y && cortocircuitos si el primer operando es falso).

fork()||fork()&&fork() es equivalente a fork() || ( fork() && fork() ) fork() || ( fork() && fork() )

Por lo tanto:

  fork() 0/ \>0 / * ==> || short-circuits, no evaluation of fork()&&fork() fork() 0/ \>0 && short-circuits, no evaluation of &&fork() ==> * fork() / \ * * 

Para su primer ejemplo, fue equivalente a ( fork() && fork() ) || fork() ( fork() && fork() ) || fork() .

Si esta es una pregunta de entrevista (probable) o tarea (un poco menos probable), primero debe explicar con calma cómo podría evaluarla.

Con eso quiero decir, usted declara que la primera, la segunda y la quinta horquilla son incondicionales, pero la tercera y la cuarta dependen de la segunda y la tercera (y que esta segunda y tercera ocurrirán en múltiples procesos).

Eso demostrará que entiendes los conceptos.

Luego explica que en realidad no importa porque, si algún progtwigdor le entregó el código de esa manera, se produciría una acción seria de tar’n’feather. El código como esta monstruosidad no tiene lugar en el mundo real y, aunque es bueno para probar su comprensión, nunca lo encontrará en la realidad.