subprocess.runでCtrl-Cしたときのsignalは?

/ Python

通常通りINTが送信されていると思われる。

次のようなファイルを準備してchmodで実行権限を与えておく。

./signal_test.sh

#!/usr/bin/env bash
for i in $(seq 30); do
    trap "echo $i; exit $i" $i
done
sleep 180

次にPythonで次のファイルを実行する。

from subprocess import run
try:
    run('./signal_test.sh')
except KeyboardInterrupt:
    import sys
    sys.exit(2)

これを途中でCtrl-Cで止めると画面にはSIGINTを表す2が表示される。

^C2

あくまでこういうプログラム構成の場合に限るかもしれない。終了しないsubprocessは最終的にKILL送出で終了されるのかもしれない。