終了しているか確認するためには一度フォアグランドにしないといけないのですか?
違います。fg でフォアグラウンドにしようとした時に初めて終了しているからで、killの時点ではまだ終了していないのです。
※推奨する終了方法ではないですが、kill -KILL %1
としていれば、killの時点で即座に終了するはずです。
kill %1
で終了を試みた場合、シェルはTERM,CONTの2シグナルを立て続けに起こるため、停止状態のジョブであっても終了される「はず」です。
しかし、アプリによってはTERMを受けて終了する際に「後処理」をしようとするものがあります。ことにvimは端末出力の復旧のために、色々制御シーケンスを出力するはずです。
しかしながら、vimはフォアグラウンドでない場合は出力できないように自ら制限をかけていて、そのため終了処理自体が再度シグナルで停止を受けます ( この場合 TTOU )。これが終了されない理由と思われます。
※vim の特殊事情であると言えます。
追加:TTOUの原因
フォアグラウンドでなくても、( 入力が制限を受けるとは言え ) 通常、出力は制限を受けません。
なので、TTOUの原因は出力ではなさそうです。おそらく、ioctlによる端末の属性変更 ( sttyコマンド相当 ) が原因と思われます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/04 05:23
2020/05/04 05:45
2020/05/04 05:58
2020/05/04 05:58
2020/05/04 06:21
2020/05/04 06:54