Por supuesto, uno puede escribir un controlador de señal que no haga nada y, por lo tanto, ignorar la señal de manera efectiva, pero la primera opción es ignorar específicamente la señal usando el argumento SIG_IGN
de la llamada al sistema signal()
.
Entonces, en términos de código, asumiendo la señal SIGINT
, estas son las tres opciones:
signal(SIGINT, SIG_IGN);
para ignorar signal()
, o llamarla con signal(SIGINT, SIG_DFL);
y así permitir que ocurra la acción predeterminada, es decir, terminar el proceso signal(SIGINT, termination_handler);
, donde termination_handler()
es una función que se llama la primera vez que se produce la señal. Fuente:https://www.gnu.org/software/libc/manual/html_node/Basic-Signal-Handling.html
Para el caso específico de señales donde la acción por defecto es ignorar la señal, las dos primeras opciones(SIG_IGN
ySIG_DFL
)son idénticas. La creación de una función de controlador vacía probablemente no tendrá un efecto visible, aparte de una sobrecarga (pequeña ).
NOTA :El signal()
se usa en esta respuesta por simplicidad, pero en el nuevo código sigaction()
se recomienda por razones de portabilidad.
Мне кажется, ваш сценарий подходит (, хотя я не пробовал его запускать ), так что, вероятно, у вас несоответствие шаблону. Глядя в ftp.fr.debian.org
, я не вижу ничего, что называется точно armhf
, например, но я вижу много Contents-armhf.gz
и binary-armhf
, поэтому я предполагаю, что это то, что вы пытаетесь исключить?
Попробуйте это:
rsync_exclude="$rsync_exclude --exclude *$item*"
Чтобы параметр стал --exclude *armhf*
(, звездочки не должны расширяться в этом примере, но вам нужно будет добавить кавычки, чтобы ввести это непосредственно в приглашении ).
Если вы пытаетесь обновить локальную копию, которая уже содержит другие архитектуры, вам следует добавить --delete-excluded
.