杀死暂停的流程?

Modified on: Sat, 30 Jun 2018 06:19:30 +0800

我有点困惑:

% 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而不是fg,Vim会一直活着,直到我fg,这会破坏我的直觉。

作者:Gilles,OJFord

最佳答案

vi-vi-vi是魔鬼。你必须用火杀死它。或SIGKILL

kill -KILL %1

内置的kill是足够的,可以将SIGCONT发送到挂起的进程,这样你就不必自己动手了,但如果进程阻止你发送的信号或者如果处理信号导致进程再次被挂起(如果后台进程试图从终端读取,默认情况下,它将被发送SIGTTIN,如果未处理,则暂停该过程)。

作者:,PSkocik

相关问答

添加新评论