Linuxでは、プログラムのシグナリングを外部から無効にすることは可能ですか?つまり、ソースコードを変更する必要はありませんか?
コンテクスト:
Linuxのbashスクリプト内からC(およびJava )プログラムを呼び出しています。bashスクリプト、およびスクリプトが(フォアグラウンドプロセスとして)起動する他のプログラムを中断したくありません。
私は使用できますが...
trap '' INT
... Ctrl C信号を無効にするbashスクリプトでは、これはプログラムコントロールがbashコードに含まれている場合にのみ機能します。つまり、Cプログラムの実行中にCtrl 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