Se espera que la ejecución del programa en C devuelva el error “spawn id exp5 no está abierto”.
Estoy realizando algunas pruebas en un programa con el siguiente código:
set timeout -1
set filename "test"
set programName "./library"
spawn rm -f $filename.db $filename.ind
spawn ./$programName first_fit $filename
expect "Type command and argument/s."
expect "exit"
La salida del programa es la siguiente:
Type command and argument/s.
exit
Ambas líneas están escritas utilizando printf y la siguiente línea que se ejecuta es fgets();
expect
arroja el siguiente error:
expect: spawn id exp5 not open
while executing
"expect "exit""
(file "add_data_test.sh" line 16)
davy.ai
Explicación del error
El mensaje de error indica que el comando
expect
intenta interactuar con un procesospawn
que no está abierto. En el fragmento de código proporcionado, se abre el procesospawn
para la variable$programName
, pero no se ejecuta ninguna instrucciónexpect
entre el comandospawn
y la llave de cierre}
.Esto significa que la instrucción
expect
para"exit"
intenta interactuar con un procesospawn
que no está abierto en este punto, lo que provoca que se muestre el mensaje de error.Posible solución
Para solucionar este error, es necesario agregar una instrucción
expect
antes de la instrucción"exit"
que interactúe con un procesospawn
válido. Por ejemplo, esto podría hacerse agregando una instrucciónexpect
que espere la cadena"Type command and argument/s."
después del primer comandospawn
:Con esta modificación, el comando
expect
esperará a que aparezca la cadena especificada en la salida del procesospawn
antes de continuar con el siguiente comando, evitando así el mensaje de error.