[Comm] Кто получает SIGINT в пайпе?
Valentin Lavrinenko
=?iso-8859-1?q?lvu_=CE=C1_uaservice=2Ecom=2Eua?=
Ср Ноя 16 15:43:55 MSK 2005
Hi, All!
Задача следующая: мне надо запустить некоторую команду в bash скрипте
таким образом,
чтобы:
1) Вывод команды одновременно шел на консоль и в файл
2) Была возможность определить код возврата команды
3) Команда нормально прерывалась по Ctrl-C
1) рещается с помощью tee, это понятно - пишем command | tee file.
Насчет 2) долго рылся,
в конце концов нашел полезную bash'евскую фичу PIPESTATUS. Проблема
сейчас с 3) - насколько
я понял, SIGINT от Ctrl-C получает последняя команда пайпа, т.е. tee. В
результате "основная"
команда, судя по всему, получает SIGPIPE вместо SIGINT, и выполняет
совсем не те действия,
которые нужно (опять же, возвращает не тот код ошибки).
Вопрос: можно ли как-то заставить bash (или кто там за это отвечает?)
отдавать SIGINT первой
(в общем случае - произвольной) команде в пайплайне? Я, в общем-то, могу
написать свою обертку
на C, которая будет выполнять все пункты 1) - 3), но если есть
возможность сделать это стандартными
средствами - изобретать велосипед неохота.
Подробная информация о списке рассылки community