Après beaucoup de recherches, d'essais et d'erreurs, je suis arrivé à la conclusion qu'il n'y a pas de moyen fiable de le faire. Par conséquent, j'ai utilisé une approche qui ne fonctionne qu'avec certaines applications, dans ce cas une qui modifie un fichier toutes les nSecondes. Évidemment, si l'application s'est écrasée, a quitté ou s'est figée, cela ne se produira pas.
Mon script d'Apple surveille ce fichier, et s'il détecte qu'il n'a pas été modifié après nSecondes, il forcera un redémarrage de la machine.
-- Watchdog Script --
--
-- Continually checks that a file is modified, otherwise will force a system restart
-- 2013 David Penney
-- Config
set HFSpath to "app/data/logfile.log"
set username to "user"
set passwrd to "pass"
set updateIntervalSeconds to 5
-- End Config
set lastModTime to "Deltron 3030"
delay (60)
repeat
tell application "System Events"
set newModTime to modification date of file HFSpath
end tell
if newModTime is equal to lastModTime then
do shell script "shutdown -r now" user name username password passwrd with administrator privileges
log "booooooM"
else
set lastModTime to newModTime
log "coolio"
end if
delay (updateIntervalSeconds)
end repeat