当前位置: 首页 > news >正文

进一步加强网站建设管理黄山seo公司

进一步加强网站建设管理,黄山seo公司,网页版淘宝,做pc端网站什么开头C 信号处理 目录 C 信号处理 signal() 函数 实例 raise() 函数 实例 信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获,但是下表…

C++ 信号处理

目录

C++ 信号处理

signal() 函数

实例

raise() 函数

实例



 

信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。

有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 <csignal> 中。

信号描述
SIGABRT程序的异常终止,如调用 abort
SIGFPE错误的算术运算,比如除以零或导致溢出的操作。
SIGILL检测非法指令。
SIGINT程序终止(interrupt)信号。
SIGSEGV非法访问内存。
SIGTERM发送到程序的终止请求。

signal() 函数

C++ 信号处理库提供了 signal 函数,用来捕获突发事件。以下是 signal() 函数的语法:


void (*signal (int sig, void (*func)(int)))(int); 

这个看起来有点费劲,以下语法格式更容易理解:

signal(registered signal, signal handler)

这个函数接收两个参数:第一个参数是一个整数,代表了信号的编号;第二个参数是一个指向信号处理函数的指针。

让我们编写一个简单的 C++ 程序,使用 signal() 函数捕获 SIGINT 信号。不管您想在程序中捕获什么信号,您都必须使用 signal 函数来注册信号,并将其与信号处理程序相关联。看看下面的实例:

实例

#include <iostream>
#include <csignal>
#include <unistd.h>using namespace std;void signalHandler( int signum )
{cout << "Interrupt signal (" << signum << ") received.\n";// 清理并关闭// 终止程序  exit(signum);  }int main ()
{// 注册信号 SIGINT 和信号处理程序signal(SIGINT, signalHandler);  while(1){cout << "Going to sleep...." << endl;sleep(1);}return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:


Going to sleep....
Going to sleep....
Going to sleep....

现在,按 Ctrl+C 来中断程序,您会看到程序捕获信号,程序打印如下内容并退出:


Going to sleep....
Going to sleep....
Going to sleep....
Interrupt signal (2) received.

raise() 函数

您可以使用函数 raise() 生成信号,该函数带有一个整数信号编号作为参数,语法如下:


int raise (signal sig);

在这里,sig 是要发送的信号的编号,这些信号包括:SIGINT、SIGABRT、SIGFPE、SIGILL、SIGSEGV、SIGTERM、SIGHUP。以下是我们使用 raise() 函数内部生成信号的实例:

实例

#include <iostream>
#include <csignal>
#include <unistd.h>using namespace std;void signalHandler( int signum )
{cout << "Interrupt signal (" << signum << ") received.\n";// 清理并关闭// 终止程序 exit(signum);  }int main ()
{int i = 0;// 注册信号 SIGINT 和信号处理程序signal(SIGINT, signalHandler);  while(++i){cout << "Going to sleep...." << endl;if( i == 3 ){raise( SIGINT);}sleep(1);}return 0;
}

当上面的代码被编译和执行时,它会产生下列结果,并会自动退出:


Going to sleep....
Going to sleep....
Going to sleep....
Interrupt signal (2) received.
http://www.ds6.com.cn/news/25266.html

相关文章:

  • 自己电脑做网站空间福州360手机端seo
  • 网站导航条做多高网站推广的内容
  • 做私房蛋糕在哪些网站写东西百度官方下载
  • 高明网站设计多少钱seo课程多少钱
  • 有没有帮别人做图片的网站赚钱广州:推动优化防控措施落
  • 建公司网站需要多少钱关键词搜索指数
  • 中小企业网站推广企业品牌推广营销方案
  • 怎么测网站流量吗外贸建站平台
  • wordpress自带ajax失效抖音seo排名优化
  • 用粉色做网站主题色怎么做个网站
  • 企业交易平台的网站制作多少钱株洲最新今日头条
  • 专门做情侣装的网站推广注册app赚钱平台
  • 做网站可以干什么网站关键词优化方案
  • 厦门律师网站建设商品关键词怎么优化
  • 中陕核建设集团网站网站优化最为重要的内容是
  • 免费网站建设步骤最新时事热点
  • 水泥公司网站建设简单网页制作成品和代码
  • 保洁公司用哪些网站做推广附近的教育培训机构有哪些
  • 网站建设公司模板天猫seo搜索优化
  • 网站ui怎么做的今日冯站长之家
  • 网站建设教程 三级分销推广普通话的意义简短
  • 可靠的网站建设图微信营销典型案例
  • 视频网站做cpa怎么做好网络销售
  • 做网站费用可以看为广告费用吗网站策划是做什么的
  • 购物网站开发原理seo公司哪家好用
  • wap网站开发技术广告优化
  • 网站建设报价东莞重庆seo小z博客
  • 餐饮网站制作seo整站优化新站快速排名
  • 禹州做网站的营销是什么意思
  • 男人和女人做羞羞的事情网站网站排名seo