Ksh93 hace mucho para evitar los tenedores. No tengo idea de cómo sabe manejar el primer caso, ya truss
que muestra que solo llama una write(2)
llamada con el resultado final.
Puede ser que David escanee el comando en macro.c y sepa que puede manejar el "eco" internamente.
Lo que puedo decir es que reescribí el analizador y el intérprete de "Bourne Shell" el año pasado y reduje principalmente el número de tenedores y reemplacé muchos de ellos por vfork()
llamadas. Esto hace que Bourne Shell sea el segundo shell más rápido después de ksh93. Es posible que también desee realizar sus pruebas bosh
.
Por cierto: ksh93 evita las horquillas en general. Implementa una estructura que contiene todas las variables globales anteriores y esto hizo que el código de shell vuelva a entrar si se llama con diferentes instancias del puntero de estructura de variables "global".
Ksh93 utiliza este método siempre que hay una (cmd)
subshell.
La razón de esta reescritura es que David está usando Win-DOS en su computadora portátil y no le gustó el lento Cygwin, por lo que escribió UWIN y usa ksh93 en Win-DOS directamente. Como no hay fork()
Win-DOS, necesitaba encontrar una nueva solución ...
ksh
instalado? Cuando ejecuto su código, obtengo0
cualquier shell que no haya instalado