2021/05/07

How to kill subprocesses of mintty (cygwin) どうやってサブプロセスで立ち上げたminttyのPIDを取得してkillするか

#!/bin/bash

trap 'kill $(jobs -p)' EXIT

mintty -e "some commands" &

wait


上記のスクリプトは標準的なサブプロセスkillの手順だが、これだと終了時にminttyのサブプロセスのPIDを捕まえられずにエラーが返ってくる。なんでPIDとれないんじゃろかと思って man mintty すると、どうもminttyは起動時にdaemon化(と言うのかは知らんが)して子プロセスから離脱してしまうらしい。で、そのdaemonを止めるために -d というオプションがあるらしい。

したがって以下のようにminttyのコマンドを修正することで無事に jobs -p でPIDを取得できた。

#!/bin/bash

trap 'kill $(jobs -p)' EXIT

mintty -d -e "some commands" &

wait


0 件のコメント: