В Linux можно как-то отключить сигнализацию для программ извне ... то есть, без изменения исходного кода?
Контекст:
Я вызываю программу C (, а также Java ) из сценария bash в Linux. Я не хочу никаких прерываний для моего сценария bash и других программ, запускаемых этим сценарием (как процессы переднего плана).
Хотя я могу использовать ...
trap '' INT
... в моем сценарии bash для отключения сигнала Ctrl C это работает только тогда, когда программный элемент управления находится в коде bash. То есть, если я нажимаю Ctrl C во время работы программы C, программа C прерывается и завершается! Эта программа на C выполняет некоторую критическую операцию, из-за которой я не хочу, чтобы ее прерывали. У меня нет доступа к исходному коду этой программы на C, поэтому об обработке сигналов внутри программы C не может быть и речи.
#!/bin/bash
trap 'echo You pressed Ctrl C' INT
# A C program to emulate a real-world, long-running program,
# which I don't want to be interrupted, and for which I
# don't have the source code!
#
# File: y.c
# To build: gcc -o y y.c
#
# #include <stdio.h>
# int main(int argc, char *argv[]) {
# printf("Performing a critical operation...\n");
# for(;;); // Do nothing forever.
# printf("Performing a critical operation... done.\n");
# }
./y
С уважением,
/ HS