Есть ли способ для меня реализовать пользовательские поддельные сигналы в ksh? В настоящее время я захватываю сигнал ERR и выхожу. Однако из-за изменения есть вызовы, которые не могут вернуть успех, однако это допустимое условие. В этом случае я хочу убедиться, что этот вызов генерирует другой сигнал или обрабатывает ERR по-разному. Есть ли способ сделать это?пользовательский сигнал ловушки в ksh
ответ
Вы можете использовать kill
для отправки любого сигнала, который вы хотите в текущую оболочку. Вы можете использовать exit
в подоболочке или return
в функции для установки любого кода ошибки, который вы хотите.
Попробуйте этот скрипт:
#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"
Пример:
$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done
Возможно, вы могли бы просто обернуть заявления, коды выхода которых вы хотите рассматривать специально в конструкции, которая просто сделает то, что вы хотите (используя конструкции «или» или «если нет» и анализируя коды выхода).
Это, кажется, намного более чистый стиль программирования, не так ли?
:) вот что я делаю прямо сейчас! хотел очистить дальше и на основе того, что у меня есть, захват сигналов в несколько функций, казалось, был самым чистым способом. – Kiran 2010-12-16 22:47:56
- 1. Пользовательский сигнал не работает
- 2. Пользовательский сигнал не распространяется
- 3. Создать пользовательский сигнал в verilog
- 4. auto_ptr Ловушки и ловушки
- 5. Отправлять сообщения stderr/stdout на функцию и сигнал выхода ловушки
- 6. Bash или KornShell (ksh)?
- 7. Пользовательский звуковой сигнал уведомления iOS
- 8. Невозможно испустить сигнал в QML пользовательский Пункт
- 9. Как настроить пользовательский сигнал будильника в android
- 10. Пользовательский сигнал не работает в PySide
- 11. Пользовательский сигнал для плагина в Qt
- 12. PyQt сигнал с витой: Не удается поймать пользовательский сигнал
- 13. Как отправить пользовательский сигнал процессу демона bash?
- 14. как использовать пользовательский сигнал с QStateMachine addtransition
- 15. Ошибка ловушки в R
- 16. ошибка ловушки в httpwebresponse
- 17. Настройка IFS в KSH
- 18. Обработка строк в ksh
- 19. Ускорение эха в ksh
- 20. Что-аргумент в ksh?
- 21. Bad substittion в KSH
- 22. Отключить процесс в ksh
- 23. Как остановить процесс супервизора внутри контейнера Docker (сигналы блокировки ловушки)
- 24. Rufus-Scheduler, DaemonKit и ловушки
- 25. R: ловушки ошибок в `nls`
- 26. Проблема синтаксиса ловушки в bash
- 27. ловушки коллекций сущностей в Hibernate
- 28. Алгоритм для ловушки в 8086
- 29. Ловушки Session_End в vb.net 2012
- 30. Пользовательский предупреждающий сигнал не работает в пользовательском интерфейсе JQuery
Хмм, HI Dennis, интересно, что это не работает. Я вижу только эхо, сделанное выше, и не вижу, чтобы USR1 был пойман. В приведенном выше случае даже ERR не попадает. Однако, когда я добавил следующий chmod 777/где у меня нет прав доступа, он печатает «обработанный ERR-сигнал» – Kiran 2010-12-17 13:28:10