私は少し混乱しています:
% vim tmp
zsh: suspended vim tmp
% kill %1
% jobs
[1] + suspended vim tmp
% kill -SIGINT %1
% jobs
[1] + suspended vim tmp
% kill -INT %1
% jobs
[1] + suspended vim tmp
だから私はただ「自分でやってみる」ために仕事をやめ、後でその理由が何なのか気になりました。
% fg
[1] - continued vim tmp
Vim: Caught deadly signal TERM
Vim: Finished.
zsh: terminated vim tmp
%
ああ!
今考えてみると、vim
シグナルハンドラが終了してこれを実行するように指示するには、実行している必要があります。
しかし、明らかに私が望むものではありません。
単一のコマンドで「目覚めて終了」する方法はありますか?つまり、kill %N && fg %N
? の組み込みエイリアスです。
バックグラウンドリカバリが機能しないのはなぜですか?bg
代わりにIを使用すると、fg
VimはIまで生きます。fg
これは上記の直観を崩します。
ベストアンサー1
vi-vi-vi
それは悪魔に属するものです。火で殺さなければなりません。またはSIGKILL
:
kill -KILL %1
組み込み関数は中断されたプロセスにkill
転送するのに十分なSIGCONT
ので、直接実行する必要はありません。ただし、プロセスが送信する信号をブロックしたり、プロセスが再び中断されるようにする信号を処理したりすることは役に立ちません(バックグラウンドプロセスが端末から読み取ろうとするとデフォルトで送信され、SIGTTIN
処理されない場合はプロセスが中断されます)。