关于linux中的Ctrl+C,Ctrl+Z,Ctrl+D

时间:2022-07-26 18:43:05

Ctrl+C:送SIGINT信号,默认进程会结束,但是进程自己可以重定义收到这个信号的行为。
Ctrl+Z:送SIGSTOP信号,进程只是被停止,再送SIGCONT信号,进程继续运行。
Ctrl+D:不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

有些信号不能被屏蔽,比如中断,还应该有杀死进程的信号,要不然内核怎么做操作系统中的老大。实际上,SIGKILL和SIGSTOP信号是不能被屏蔽或阻止的,它们的默认动作总是会被执行的。

Ctrl+C和Ctrl+Z都是中断命令,但是它们的作用却不一样。
Ctrl+C是强制中断程序的执行;
Ctrl+Z的作用是将任务中断,但是此任务并没有结束,它仍然以进程形式存在于系统中,它只是维持挂起的状态。用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。

例如:
当你vim一个文件是,如果需要用shell执行别的操作命令,但是你又不打算关闭vim,因为你得存盘退出,你可以简单的按下ctrl+z,shell会将vim进程挂起。当结束了别的shell操作之后,你可以用fg命令继续vim你的文件。