0
点赞
收藏
分享

微信扫一扫

Simple Linux C Socket (03): signal

静悠 2022-08-05 阅读 67

概述

Linux C网络编程过程中,会使用死循环实现服务的持续运转,但死循环容易导致程序无法退出或程序退出资源未释放的情况,此时可引入Linux C提供的信号(signal)函数,实现对程序运行的控制。

概述

Linux中的信号(signal)可实现程序运行过程中的中断(即程序收到信号后,暂停当前运行,先处理中断(信号事件)),以此来接入正在运行的程序。

如Ctrl+C既是给程序传递结束运行信号(杀死当前在终端运行的程序),或killall + 程序名,或kill + 程序进程id 都是给程序传递结束运行信号。

代码

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void func_ctrl_c( int nSignal )
{
printf( "%d: Ctrl + C signal...\n", nSignal );
exit( 0 );
}

void func_kill( int nSignal )
{
printf( "%d: kill or killall signal...\n", nSignal );
exit( 0 );
}

int main()
{
signal( 2, func_ctrl_c ); //Ctrl + C
signal( 15, func_kill ); //kill
while( 1 );
}

举报

相关推荐

0 条评论