質問: subprocess.PIPE, shell=True) ``` 何か回避する別の方法等ありましたら、ご教授よろしくお願いいたします。
回答: 少なくともパイプでつながって、子プロセスの標準出力を読んでいる状態では、親が終了すると、次に子プロセスがパイプに書いたときに`SIGPIPE`のシグナルで子プロセスが死にます(Pythonだと`BrokenPipeError`になる)。 また、親プロセスが自分で終了するのでなく、Ctrl-Cキーを押すとか、`Kill`で殺すとかすると、子プロセスもろともに死にます。 なので、子プロセスが死なないためには、 ・親は自分で終了すること(※1) ・子プロセスは親が終了した以降はパイプに書かないか、または`BrokenPipeError`を`try`~`except`で無視するようにするなど が必要です。 ※1:他の手段も有り。