回答編集履歴

2

TTOUの原因について補足

2020/05/04 06:22

投稿

angel_p_57
angel_p_57

スコア1681

test CHANGED
@@ -15,3 +15,11 @@
15
15
  しかしながら、vimはフォアグラウンドでない場合は出力できないように自ら制限をかけていて、そのため終了処理自体が再度シグナルで停止を受けます ( この場合 TTOU )。これが終了されない理由と思われます。
16
16
 
17
17
  ※vim の特殊事情であると言えます。
18
+
19
+
20
+
21
+ 追加:TTOUの原因
22
+
23
+ フォアグラウンドでなくても、( 入力が制限を受けるとは言え ) 通常、出力は制限を受けません。
24
+
25
+ なので、TTOUの原因は出力ではなさそうです。おそらく、ioctlによる端末の属性変更 ( sttyコマンド相当 ) が原因と思われます。

1

処理機構の内容について訂正

2020/05/04 06:22

投稿

angel_p_57
angel_p_57

スコア1681

test CHANGED
@@ -8,6 +8,10 @@
8
8
 
9
9
 
10
10
 
11
- `vim ~&` とし時点でvim 一時停止系 ( STOP,TSTP,TTIN,TTOU等 ) のシグナルを停止状態にあります。そ状態他のシグナルを kill で送たとしても、KILL 以外「保留状態になります。
11
+ `kill %1`で終了を試み場合シェルはTERM,CONTの2シグナルを立て続に起こるため、停止状態のジョブっても終了される「す。
12
12
 
13
- それでfg で再開した ( 内部的には CONTシグナル ) 時初めて保留されていたグナルの影響が出るです。
13
+ しかしアプリよってはTERM受けて終了する際に「後処理」をしようとするものがあります。ことにvimは端末力の復旧のに、色々制御ーケンスを力すはずです。
14
+
15
+ しかしながら、vimはフォアグラウンドでない場合は出力できないように自ら制限をかけていて、そのため終了処理自体が再度シグナルで停止を受けます ( この場合 TTOU )。これが終了されない理由と思われます。
16
+
17
+ ※vim の特殊事情であると言えます。