пользовательский сигнал прерывания в ksh - PullRequest
1 голос
/ 17 декабря 2010

Есть ли способ для меня реализовать пользовательские фальшивые сигналы в ksh?В настоящее время фиксирую сигнал ERR и выхожу.Тем не менее, из-за изменения, есть вызовы, которые могут не вернуть успех, однако это допустимое условие.В таком случае я хочу убедиться, что этот вызов генерирует другой сигнал или обрабатывает ERR по-другому.Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Вы можете использовать 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
0 голосов
/ 17 декабря 2010

Возможно, вы могли бы просто обернуть операторы, коды выхода которых вы хотите обработать, особенно в конструкции, которая просто делала бы то, что вы хотите (используя конструкции "или" или "если нет" и анализируя коды выхода).

Это кажется более чистым стилем программирования, не так ли?

...