用ctrl c命令取消程序的等价物
我在远程机器上运行一个很长的程序,我想停止它,但我的问题是,如果我使用kill命令,那么程序将退出而不保存结果。 通常情况下,我所做的完成程序是使用CTRL C,在这种情况下,程序保存结果,但现在我不在机器运行会话,所以我不能做CTRL C。
我的问题是:有没有办法以远程的方式做相当于ctrl c ?.
尝试:
kill -SIGINT processPIDHere
基本上Ctrl C发送SIGINT
(中断)信号,而kill则默认发送SIGTERM
(终止)信号,除非你指定要发送的信号。
ctrl c只是发送一个SIGINT信号,但还有一些其他的信号稍微软一些。 http://www.gnu.org/software/libtool/manual/libc/Termination-Signals.html
我认为你可以使用kill命令发送一些其他的信号。 (见男子杀死更多的信息)
如果你控制长时间运行的远程进程,你可以为SIGTERM安装一个信号处理程序(参见man signal
和man sigaction
以及关于这个主题的许多SO问题),以便在死亡之前很好地清理。
这是一件很平常的事情。
请记住,在你的信号处理程序,它就像一个中断处理程序,因为你是在允许你做什么,而不损坏你的程序的其余部分,是非常有限的。 你可以在这里做的最好的事情是设置一个atomic_t“should_quit”variables。