es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Explicación del error

    El mensaje de error indica que el comando expect intenta interactuar con un proceso spawn que no está abierto. En el fragmento de código proporcionado, se abre el proceso spawn para la variable $programName, pero no se ejecuta ninguna instrucción expect entre el comando spawn y la llave de cierre }.

    Esto significa que la instrucción expect para "exit" intenta interactuar con un proceso spawn 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 proceso spawn válido. Por ejemplo, esto podría hacerse agregando una instrucción expect que espere la cadena "Type command and argument/s." después del primer comando spawn:

    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"
    

    Con esta modificación, el comando expect esperará a que aparezca la cadena especificada en la salida del proceso spawn antes de continuar con el siguiente comando, evitando así el mensaje de error.

Comments are closed.