linux中的Ctrl+C的

        最近在写socket程序的时候发现服务器短使用Ctrl C用来结束一切正常,下次启动也是正常的。而使用Ctrl Z来结束时,发现再次启动时提示说地址已经被占用了,就是说那个端口不能启动新的服务了。

这时我的第一反应就是:是不是Ctrl Z结束有什么资源没有回收?

查了下才知道Ctrl Z并没有真正的退出,而只是将在前台执行的命令放到后台了,这是我使用socket客户端发送内容还是正常的,这个时候可以用jobs查看下后台运行的程序,显示是Running的。
这时用fg把后台运行的程勋放到前台来,回显什么都是正常的。

当在终端按Crtl+c 时向当前进程发送信号: SIGINT
当在终端输入kill id 杀死一个进程时,发送信号: SIGTERM
下面这个程序时验证上面的含义, 我把 SIGINT 和SIGTERM 信号全部截获下来了,
此时这个程序通过ctrl+c 和kill 是杀不死的.
#include <signal.h>
#include <stdio.h>
void func1()
{
printf(“SIGINT \n”);
}
void func2()
{
printf(“SIGTERM \n”);
}
int main()
{
signal (SIGINT, func1);
signal ( SIGTERM, func2);
while(1);
}
/****************************************************/
杀死一个或者一系列进程,通常先尝试最小危险的信号 SIGTERM。那样,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值