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

国外网站排行榜wordpress 摄影 模板

国外网站排行榜,wordpress 摄影 模板,湖南批量出品机,wordpress评论通知代码本期#xff0c;我们今天要将的是信号的第二个知识#xff0c;即信号的产生。 目录 #xff08;一#xff09;通过终端按键产生信号 #xff08;二#xff09;调用系统函数向进程发信号 #xff08;三#xff09;由软件条件产生信号 #xff08;四#xff09;硬件… 本期我们今天要将的是信号的第二个知识即信号的产生。 目录 一通过终端按键产生信号 二调用系统函数向进程发信号 三由软件条件产生信号 四硬件异常产生信号 五小结 一通过终端按键产生信号 SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且Core Dump,现在我们来验证一下。 我们之前学习进程等待的时候给大家介绍了以下这张图片其中【core dump】没有讲今天我将给大家解释这个词的含义。 【解释说明】 首先解释什么是Core Dump。Linux提供了一种能力当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做Core Dump在云服务器上默认是关闭这个功能的进程异常终止通常是因为有Bug,比如非法内存访问导致段错误,事后可以用调试器检查core文件以查清错误原因,这叫做Post-mortem Debug事后调试一个进程允许产生多大的core文件取决于进程的Resource Limit(这个信息保存 在PCB中)默认是不允许产生core文件的,因为core文件中可能包含用户密码等敏感信息,不安全在开发调试阶段可以用ulimit命令改变这个限制,允许产生core文件。 首先用ulimit命令改变Shell进程的Resource Limit,允许core文件最大为1024K:  ulimit -c1024 命令用于显示有关用户当前资源限制ulimits的信息。此命令显示各种系统资源的硬限制和软限制以下是一个示例输出  【解释说明】 core文件大小 core转储的最大大小以块为单位。数据段大小 进程的数据区大小以千字节为单位。文件大小 文件的最大大小以块为单位。最大锁定内存 锁定在内存中的地址空间的最大大小以千字节为单位。最大内存大小 进程可以拥有的最大数据大小以千字节为单位。打开文件数 进程可以拥有的最大文件描述符数量。堆栈大小 进程的堆栈大小以千字节为单位。CPU时间 进程可以消耗的最大CPU时间以秒为单位。最大用户进程数 用户可以创建的最大进程数。虚拟内存大小 进程可用的虚拟内存大小以千字节为单位。 【注意】 值为“无限制”表示该特定资源没有设置特定限制可以使用 ulimit 命令或通过修改配置文件来调整这些限制。请注意特定资源及其限制可能因操作系统和系统配置而异。 接下来我们手动设置核心转储文件的大小。具体如下 【解释说明】 上述命令用于设置核心文件的最大大小为10240个块通常每个块大小为字节具体大小取决于系统设置-c: 表示设置或显示核心文件的最大大小限制。10240: 表示核心文件的最大大小限制为10240个块。如果以字节计算这意味着核心文件的最大大小为10240个块乘以每个块的字节数。 接下来我们查询 signal信号。发现信号后面的有的是【term】有的是【core】。具体如下 【解释说明】 【term】 是一个信号名称它代表着进程正常终止信号无其他操作【core】通常指的是在进程异常终止如段错误时生成的核心转储文件。这个文件包含了进程在崩溃时的内存映像可以用于调试和分析问题。当一个进程崩溃时操作系统通常会生成一个名为 core 的文件其中包含了进程在崩溃瞬间的内存状态。 接下来我们就去验证上述结论  首先这里有几行简单的代码  int main(int argc, char *argv[]) {while (true){cout 我是一个正常运行的进程 getpid() endl; sleep(1);}return 0; } 紧接着我们先让程序正常的跑起来 程序可以正常运行之后接下来我先测试上述信号中后面标志为【term】的看测试效果 接下来我先测试上述信号中后面标志为【core】的看测试效果 当我们打开这个文件时发现全是乱码因为这是给OS看的不是给用户看的 ulimit命令改变了Shell进程的Resource Limit,test进程的PCB由Shell进程复制而来,所以也具 有和Shell进程相同的Resource Limit值,这样就可以产生Core Dump了。 使用core文件 二调用系统函数向进程发信号 首先在后台执行死循环程序,然后用kill命令给它发SIGSEGV信号 【解释说明】 3995是test进程的id。之所以要再次回车才显示 Segmentation fault ,是因为在3995进程终止掉 之前已经回到了Shell提示符等待用户输入下一条命令,Shell不希望Segmentation fault信息和用 户的输入交错在一起,所以等用户输入命令之后才显示。指定发送某种信号的kill命令可以有多种写法,上面的命令还可以写成 kill -SIGSEGV 3995或 kill -11 3995, 11是信号SIGSEGV的编号。以往遇 到的段错误都是由非法内存访问产生的,而这个程序本身没错,给它发SIGSEGV也能产生段错误 kill命令是调用kill函数实现的。kill函数可以给一个指定的进程发送指定的信号。 函数的原型如下 #include signal.hint kill(pid_t pid, int sig);pid_t pid: 要发送信号的进程的进程ID。如果 pid 为正数信号将发送到具有该进程ID的进程。如果 pid 为0信号将发送到与调用进程属于同一进程组的所有进程。如果 pid 为-1信号将发送到调用进程有权限发送信号的所有进程。int sig: 要发送的信号的编号。 而raise函数可以给当前进程发送指定的信号(自己给自己发信号) 函数的原型如下 #include signal.hint raise(int sig);int signo要发送的信号的编号。 abort函数使当前进程接收到信号而异常终止 函数的原型如下 #include cstdlibvoid abort(void);使用abort函数非常简单只需在需要终止进程的地方调用它即可。当调用abort函数时以下操作将被执行 向当前进程发送SIGABRT信号。默认情况下SIGABRT信号会导致进程终止并生成一个核心转储文件。终止处理程序会被启动这是一个特殊的信号处理程序可以用来执行一些清理工作或记录错误信息。如果没有安装终止处理程序或者终止处理程序调用了_Exit函数或返回则进程会异常终止并打印一条错误消息到标准错误流stderr。 代码展示  void cleanup() {std::cout Performing cleanup before aborting... std::endl;// 执行一些清理工作 }void handler(int signo) {std::cout Received signal signo std::endl;// 自定义信号处理逻辑exit(signo); }int main() {// 注册终止处理程序if (atexit(cleanup) ! 0) {std::cerr Failed to register cleanup function std::endl;exit(EXIT_FAILURE);}// 注册信号处理函数if (signal(SIGABRT, handler) SIG_ERR) {std::cerr Failed to register signal handler std::endl;exit(EXIT_FAILURE);}std::cout Starting program... std::endl;std::cout Triggering abort... std::endl;// 调用abort函数触发进程终止abort();std::cout This line will not be reached std::endl;return 0; } 输出展示 【解释说明】 在调用abort函数后程序收到了SIGABRT信号并执行了注册的终止处理程序和信号处理函数就像exit函数一样,abort函数总是会成功的,所以没有返回值   三由软件条件产生信号 SIGPIPE是一种由软件条件产生的信号,在“管道”中已经介绍过了。本节主要介绍alarm函数 和SIGALRM信号。 #include unistd.h unsigned int alarm(unsigned int seconds);调用alarm函数可以设定一个闹钟,也就是告诉内核在seconds秒之后给当前进程发SIGALRM信号, 该信号的默认处理动作是终止当前进程。 接下来我简单的演示一下这个函数 //io的效率低下 int main() {alarm(1);int count 0;while (true) {// 打印显示器打印网络std::cout count : count std::endl; //1s之内计算机将一个正数累计到多少}return 0; } 多跑几次程序我们可以发现打印出来的结果都是不同的  当我们此时真正想测试计算机的算力时我们可以像如下这样:  int count 0;void myhandler(int signo) {std::cout get a signal: signo count: count std::endl;exit(0); }int main(int argc, char *argv[]) {signal(SIGALRM,myhandler);alarm(1);while (true) count;return 0; }多跑几次程序我们可以发现打印出来的结果跟上完全是天差地别 上述 alarm 这个函数的返回值是0或者是以前设定的闹钟时间还余下的秒数打个比方,某人要小睡一觉,设定闹钟为30分钟之后响,20分钟后被人吵醒了,还想多睡一会儿,于是重新设定闹钟为15分钟之后响,“以前设定的闹钟时间还余下的时间”就是10分钟如果seconds值为0,表示取消以前设定的闹钟,函数的返回值仍然是以前设定的闹钟时间还余下的秒数   接下来我们代码简单的演示一下 void myhandler(int signo) {std::cout get a signal: signo count: count std::endl;int n alarm(10);std::cout return: n std::endl; }int main(int argc, char *argv[]) {std::cout pid: getpid() std::endl;signal(SIGALRM,myhandler);alarm(10);while(true){sleep(1);}return 0; } 输出展示  四硬件异常产生信号 硬件异常被硬件以某种方式被硬件检测到并通知内核,然后内核向当前进程发送适当的信号。例如当前进程执行了除以0的指令,CPU的运算单元会产生异常,内核将这个异常解释 为SIGFPE信号发送给进程。再比如当前进程访问了非法内存地址,,MMU会产生异常,内核将这个异常解释为SIGSEGV信号发送给进程。 五小结 以上便是本文的主要内容接下来简单小结本文都讲了些什么 在Linux中信号可以通过多种方式产生包括 硬件异常 这些是由硬件引起的异常事件例如 除零错误SIGFPE 当程序尝试执行除以零的操作时会产生 SIGFPE 信号。无效内存访问SIGSEGV 当程序尝试访问未分配给它的内存地址时会产生 SIGSEGV 信号。内存访问越界SIGBUS 当程序尝试访问无效的内存地址时会产生 SIGBUS 信号。 软件中断 这些是由软件引发的事件通常是为了通知进程已经达到了某个预定条件例如 定时器超时SIGALRM 当一个定时器达到设定的时间时会产生 SIGALRM 信号。 其他进程发送信号 一个进程可以通过系统调用向另一个进程发送信号例如 kill 命令 通过命令行的 kill 命令或者在程序中使用 kill 函数可以向指定的进程发送信号。终端操作 用户在终端中执行特定的操作例如按下 CtrlC 组合键会向当前前台进程发送 SIGINT 信号。 进程自身发送信号 进程可以通过调用 raise 函数或者 kill 函数向自身发送信号。 调用 kill 函数 进程可以使用 kill 函数向自身发送信号使用进程ID为 getpid()。 软件条件满足 在程序中当特定的条件满足时可以使用信号来通知其他部分程序执行某些动作这通常需要由程序本身显示地触发。 以上便是本文的全部内容了感谢大家的观看和支持
文章转载自:
http://www.morning.kpbn.cn.gov.cn.kpbn.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.pdkht.cn.gov.cn.pdkht.cn
http://www.morning.wbxr.cn.gov.cn.wbxr.cn
http://www.morning.mfct.cn.gov.cn.mfct.cn
http://www.morning.pumali.com.gov.cn.pumali.com
http://www.morning.5-73.com.gov.cn.5-73.com
http://www.morning.bbtn.cn.gov.cn.bbtn.cn
http://www.morning.ljxps.cn.gov.cn.ljxps.cn
http://www.morning.qsszq.cn.gov.cn.qsszq.cn
http://www.morning.xkppj.cn.gov.cn.xkppj.cn
http://www.morning.tkzqw.cn.gov.cn.tkzqw.cn
http://www.morning.qtryb.cn.gov.cn.qtryb.cn
http://www.morning.mtmph.cn.gov.cn.mtmph.cn
http://www.morning.glkhx.cn.gov.cn.glkhx.cn
http://www.morning.gywxq.cn.gov.cn.gywxq.cn
http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn
http://www.morning.jhswp.cn.gov.cn.jhswp.cn
http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn
http://www.morning.cplym.cn.gov.cn.cplym.cn
http://www.morning.jmllh.cn.gov.cn.jmllh.cn
http://www.morning.yngtl.cn.gov.cn.yngtl.cn
http://www.morning.qiyelm.com.gov.cn.qiyelm.com
http://www.morning.stfdh.cn.gov.cn.stfdh.cn
http://www.morning.drmbh.cn.gov.cn.drmbh.cn
http://www.morning.xshkh.cn.gov.cn.xshkh.cn
http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn
http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn
http://www.morning.tlpgp.cn.gov.cn.tlpgp.cn
http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn
http://www.morning.hytfz.cn.gov.cn.hytfz.cn
http://www.morning.plnry.cn.gov.cn.plnry.cn
http://www.morning.pjwml.cn.gov.cn.pjwml.cn
http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn
http://www.morning.nydtt.cn.gov.cn.nydtt.cn
http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn
http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn
http://www.morning.wchsx.cn.gov.cn.wchsx.cn
http://www.morning.jyfrz.cn.gov.cn.jyfrz.cn
http://www.morning.brlgf.cn.gov.cn.brlgf.cn
http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn
http://www.morning.gychx.cn.gov.cn.gychx.cn
http://www.morning.wcyr.cn.gov.cn.wcyr.cn
http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn
http://www.morning.bnjnp.cn.gov.cn.bnjnp.cn
http://www.morning.dhwyl.cn.gov.cn.dhwyl.cn
http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn
http://www.morning.ndmbz.cn.gov.cn.ndmbz.cn
http://www.morning.gxklx.cn.gov.cn.gxklx.cn
http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn
http://www.morning.fewhope.com.gov.cn.fewhope.com
http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com
http://www.morning.rcjqgy.com.gov.cn.rcjqgy.com
http://www.morning.skbhl.cn.gov.cn.skbhl.cn
http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn
http://www.morning.nkjjp.cn.gov.cn.nkjjp.cn
http://www.morning.djmdk.cn.gov.cn.djmdk.cn
http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn
http://www.morning.kmqlf.cn.gov.cn.kmqlf.cn
http://www.morning.tgczj.cn.gov.cn.tgczj.cn
http://www.morning.gybnk.cn.gov.cn.gybnk.cn
http://www.morning.njhyk.cn.gov.cn.njhyk.cn
http://www.morning.fhghy.cn.gov.cn.fhghy.cn
http://www.morning.dnbhd.cn.gov.cn.dnbhd.cn
http://www.morning.tbplf.cn.gov.cn.tbplf.cn
http://www.morning.rycd.cn.gov.cn.rycd.cn
http://www.morning.cthrb.cn.gov.cn.cthrb.cn
http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn
http://www.morning.wqjpl.cn.gov.cn.wqjpl.cn
http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn
http://www.morning.zmwd.cn.gov.cn.zmwd.cn
http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn
http://www.morning.ymhzd.cn.gov.cn.ymhzd.cn
http://www.morning.ybyln.cn.gov.cn.ybyln.cn
http://www.morning.nzwp.cn.gov.cn.nzwp.cn
http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn
http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn
http://www.morning.fksrg.cn.gov.cn.fksrg.cn
http://www.morning.lmbm.cn.gov.cn.lmbm.cn
http://www.morning.xmnlc.cn.gov.cn.xmnlc.cn
http://www.tj-hxxt.cn/news/281281.html

相关文章:

  • 网站建设公司简介模板wordpress 使用浏览器缓存
  • 淘宝内部卷网站建设深圳宝安区是什么风险
  • 网站导航优化的描述游戏设计网站
  • 公司网站搭建南宁市建设厅网站
  • phpcms 网站路径建设银行大厂支行网站
  • 营销网站建设步骤wordpress表单制作
  • 营销建设网站个人做网站能赚到钱吗
  • 沧州网站优化个人建设网站教程
  • 苏州模板建站定制wordpress 主题 demo
  • 工信部网站备案查询系统joomla网站如何加入会话功能
  • 网站闭站保护做网站空间
  • 网站设计描述114网址大全
  • 合肥知名网站制作公司广阳区建设局网站
  • 网站外链建设培训找我家是做的视频网站
  • flash 网站厦门关键词排名提升
  • 外贸建站与推广如何做手机壳湖北建设网
  • 鞍山企业做网站vshtml5网站开发
  • 西安市未央区建设局官方网站网站12栅格系统怎么做
  • 创建网站英语哪些网站有友情链接
  • 郑州网站建设包括哪些吉林网站建设企业
  • 网站被恶意点击怎么办protected wordpress login
  • 基础网站建设素材甘肃三北防护林建设局网站
  • 网站制作 搜索网站智能建设有那些优势
  • 谷歌优化 网站建设如何选择免费网站建设
  • 自己做第一个网站山东滕州做网站技术电话
  • 上海网站设计工具广州网站建设知名 乐云践新
  • 扬中市建设局网站适合个人开发的小程序创意
  • 网站建设管理情况报告如何将vs做的网站备份出来
  • 设计网站公司有哪些个人空间网站
  • 可以直接打开网站的方法云科技网站建设