网站访客代码js,多站点cms,食品网站建设策划书,营销型网站建设沈阳#x1f47b; 概念
信号 —— 操作系统传给进程的中断#xff0c;会提早终止程序有些信号不能被程序捕获#xff0c;有些则可以被捕获#xff0c;并基于信号采取适当的动作
信号描述SIGABRT程序的异常终止#xff0c;如调用 abortSIGFPE错误的算术运算#xff0c;比如除… 概念
信号 —— 操作系统传给进程的中断会提早终止程序有些信号不能被程序捕获有些则可以被捕获并基于信号采取适当的动作
信号描述SIGABRT程序的异常终止如调用 abortSIGFPE错误的算术运算比如除以零或导致溢出的操作SIGILL检测非法指令SIGINT程序终止 (interrupt) 信号SIGSEGV非法访问内存SIGTERM发送到程序的终止请求 准备工作
使用信号处理需要包含 csignal 头文件
#include csignal捕获信号
语法格式
使用 signal() 函数 捕获信号
void signal(registered signal, signal handler)参数 signal —— 要设置信号的标识符 参数 handler —— 指向信号处理函数的指针函数返回值是指向先前信号处理函数的指针 先前没有设置信号处理函数返回值为 SIG_DFL先前设置的信号处理函数为 SIG_IGN则返回值为 SIG_IGN
示例代码
使用 signal() 函数捕获 SIGINT 信号并将其与信号处理程序 signalHandler() 相关联。
void signalHandler(int signum) {cout Interrupt signal ( signum ) received.\n;exit(signum); // 终止程序
}...// 注册信号 SIGINT 和信号处理程序
signal(SIGINT, signalHandler);
while(1) {cout Going to sleep.... endl;sleep(1);
}Going to sleep....
Going to sleep....
Going to sleep....
Interrupt signal (2) received. // 按下 ctrlc 键时退出程序生成信号
语法格式
使用 raise() 函数 生成信号
int raise (signal sig);参数 sig —— 要发送的整数信号编号包括 SIGINT、SIGABRT、SIGFPE、SIGILL、SIGSEGV、SIGTERM、SIGHUP
示例代码
使用 raise() 函数生成 SIGINT 信号并通过 signal() 函数捕获并处理。
void signalHandler( int signum ) {cout Interrupt signal ( signum ) received.\n;exit(signum);
}...signal(SIGINT, signalHandler);int i 0;
while(i) {cout Going to sleep.... endl;if(i3)raise( SIGINT); // 生成 SIGINT 信号sleep(1);
}Sleep函数 功能执行挂起等待一段时间后再继续执行 用法 void Sleep(DWORD dwMilliseconds); // Windows系统dwMilliseconds单位毫秒unsigned int sleep(unsigned int seconds); // POSIX系统seconds单位秒注意 POSIX系统如Linux和macOS—— 使用 #include unistd.h 和 sleep() 单位秒 Windows系统 —— 使用 #include windows.h 和 Sleep() 单位毫秒