SIGINT が mysql サブプロセスに到達するのを防ぐ

SIGINT が mysql サブプロセスに到達するのを防ぐ

mysql間接的に呼び出される(長いSQLスクリプトの実行)Perlスクリプトがあります。このスクリプトの実行中にCtrl+を無効にしたいが、Cとにかくシグナルがまだ到着し、mysql「Ctrl-C - クエリが終了しました。正常に続行してください」と表示されますmysql

私は持っています:

  • 「IGNORE」に設定してください$SIG{INT}。実際、Perlスクリプトは引き続き実行されます。
  • Perlスクリプトでプロセスグループを設定する - 実際に私のPerlスクリプトと同じプロセスグループにあるものとしてps -e -o uid,pid,ppid,pgid,commandマークmysql
  • mysqlこれらの両方が発生した後に呼び出されます。

このシグナルがまだプロセスに到達するのはなぜですか。これが起こらないようmysqlにするにはどうすればよいですか。

ベストアンサー1

SIG_IGN次のようなコードを書くとhttps://stackoverflow.com/questions/3232613/how-to-stop-sigint-being-passed-to-subprocess-in-pythontrap)または次のようにシェルで使用されます。BashでSIG_IGNとSIG_DFLに信号トラップをどのように設定できますか?、私の考えでは、Perlではこれがperlipcライブラリであると思います。https://metacpan.org/pod/perlipc、IPCはプロセス間通信

「IGNORE」または「DEFAULT」文字列をハンドラとして指定することもできます。この場合、Perlはシグナルを削除するか、基本操作を実行しようとします。

源泉:https://www.mkssoftware.com/docs/man5/perlipc.5.asp

おすすめ記事