Внешнее отключение сигналов для программы Linux

В 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

12
задан Jolta 11 April 2017 в 13:41
поделиться