В настоящее время в Windows. Следующий код работает, используя WSL: < /p>
.
Код: Выделить всё
launch_wrapper_windows.shКод: Выделить всё
#!/bin/bash
path="~/game_save_backups"
handle_HUP()
{
/mnt/c/Windows/system32/cmd.exe backup.bat
exit
}
trap 'handle_HUP' HUP
/mnt/c/Windows/system32/cmd.exe auto_override_load_saves.bat
$1 "$2"
handle_HUP
< /code>
Это используется следующим образом: < /p>
Launch_x_game.batcd ../game_save_backups/
wsl -e bash -lic "launch_wrapper_windows.sh emulator_path 'game_path'"
< /code>
Теперь та же самая логика не работает на Steam OS (работая Archlinux).
Отправленный сигнал является int, а затем ??? Нет подсказки, я использовал скрипт SigCatcher, и он в затруднительном положении ничего не возвращал, просто пустой файл < /p>
Так что происходит, нажмите «Стоп в парах» -> int signal для скрипта -> Запуск Backup.sh, поскольку он поймает Int, но он останавливается другим сигналом. Это этот сигнал, который я не могу поймать.nohup backup.sh &
(backup.sh &)
backup.sh &
disown
setsid backup.sh
< /code>
Все это безрезультатно. : < /p>
trap 'handle_HUP' INT
trap 'handle_HUP' HUP
trap 'handle_HUP' TERM
trap 'handle_HUP' QUIT
trap 'handle_HUP' EXIT
trap 'handle_HUP' ABRT
trap 'handle_HUP' STOP
< /code>
Возможно, эмуляторы бросают свои собственные SIGS родителю? В любом случае, лучший способ не справиться с этим - это то, чтобы в комплекте отсоединить резервное копирование .sh на первом сигнале int из Steam, когда вы нажимаете «Выйти из игры» < /p>
Я использовал следующий скрипт, чтобы сгенерировать мой Sigcatcher: < /p>
#!/bin/sh
# generate a shell function for each and every available signal.
/bin/kill -l | tr ' ' '\n' |
while read signal; do
cat >sigcatcher.sh
< /code>
и я запускаю его так
sigcatcher.sh> sigcatcher.out < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ble-signal
Мобильная версия