0 votos

applescript no deja de ejecutarse

Tengo un applescript que utiliza una tubería con nombre y canaliza datos hacia ella. Tengo mi script pasando dichos datos en un bucle while, que está funcionando, pero me encuentro con que no puedo parar el script manualmente sin salir del programa script Editor. No necesito forzar el cierre.

Aquí está el fragmento relevante de mi script (d es una referencia de película QT que está activa y reproduciéndose; aname es una ruta POSIX válida que especifica la ubicación de la tubería nombrada):

repeat while d is playing
    set currtime to (get current time of d) as string
    get currtime
    do shell script "echo " & currtime & " > " & aname
    delay 0.125
end repeat

1voto

William T Froggard Puntos 2862

¿Estás seguro de que tienes algo en el otro extremo de esa tubería con nombre que realmente acepta los datos? "do shell script" no saldrá hasta que algo intente realmente leer de la tubería. Si quiere evitar esto, puede usar:

do shell script "sh -c \"echo " & currtime & " > " & aname & "\" &> /dev/null &"

Esto mantendrá la aparición de conchas que esperarán hasta que uses la tubería. No es una buena solución. Lo ideal sería tener algo esperando datos antes de enviar algo a una tubería con nombre, o engendrar algo para consumir los datos.

1voto

SPRBRN Puntos 1008

Así que el siguiente script enviará el texto a la tubería, en segundo plano, y si el trabajo en segundo plano no sale después de un segundo lo matará. Esto debería evitar que el script se bloquee...

#!/bin/sh
echo $1 > $2 &

sleep 1

# Following is necessary. Seems to need it or
# job will not complete! Also seen at
#  http://stackoverflow.com/a/10736613/348694
echo "Checking for running jobs..."
jobs

kill %% >/dev/null 2>&1

if [ $? -eq 0 ] ; then
   echo "Taking too long. Killed..."
   exit 1
fi

exit 0

Puedes lanzarlo desde AS así...

set qstr to quoted form of (currtime as string)
try
   do shell script "/some/dir/topipe.sh " & qstr & " " & mypipe
on error
   display dialog "ERROR:....."
   return
end try

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X