В Linux можно каким-то образом отключить сигнализацию для программ снаружи... то есть, не изменяя их исходный код?
Контекст:
Я вызываю программу C (, а также Java) из bash script в Linux. Мне не нужны перерывы для моего bash script, а для других программ, запускаемых script (в качестве процессов переднего плана).
Пока я могу использовать...
trap '' INT
... в моем bash script, чтобы отключить сигнал 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