J'ai un script AppleScript qui utilise un canal nommé et lui transmet des données. Mon script transmet les données dans une boucle while, ce qui fonctionne, mais je constate que je ne parviens pas à arrêter le script manuellement sans quitter le programme Script Editor. Je n'ai pas besoin de forcer quitter.
Voici l'extrait pertinent de mon script (d est une référence de film QT active et en cours de lecture; aname est un chemin POSIX valide qui spécifie l'emplacement du canal nommé):
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
Réponses:
Ainsi, le script suivant enverra le texte au canal, en arrière-plan, et si le travail en arrière-plan ne se ferme pas au bout d'une seconde, il le supprimera. Cela devrait empêcher le script de bloquer ...
Vous pouvez le lancer depuis AS comme ça ...
la source
Êtes-vous sûr que quelque chose à l'autre bout de ce canal nommé accepte réellement les données? "do shell script" ne se fermera pas tant que quelque chose n'essayera pas de lire dans le canal. Si vous souhaitez contourner ce problème, vous pouvez utiliser:
Cela gardera les coquilles en train de se reproduire qui attendront toutes que vous utilisiez réellement le tuyau. Pas vraiment une bonne solution. Dans l'idéal, vous devriez avoir quelque chose en attente de données avant d'envoyer quoi que ce soit à un canal nommé ou de générer quelque chose pour utiliser les données.
la source