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

免费发布项目的网站搜索词分析

免费发布项目的网站,搜索词分析,做微信平台图片网站,餐饮店设计哪家好收发信号思想是 Linux 程序设计特性之一,一个信号可以认为是一种软中断,通过用来向进程通知异步事件。 本文讲述的 信号处理内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解信号编程。 exit(5) 遵循 C11, POSI…

         收发信号思想是 Linux 程序设计特性之一,一个信号可以认为是一种软中断,通过用来向进程通知异步事件。

        本文讲述的 信号处理内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解信号编程。


exit(5)

遵循 C11, POSIX.1 - 2008

1.库

标准 c 库,libc, -lc

2.接口定义

       #include <stdlib.h>[[noreturn]] void exit(int status);

3.接口描述

        exit() 函数会导致普通程序终止并将 status 的低字节返回给父进程。

        通过 atexit(3) 和 on_exit(3) 注册的所有函数都会被调到,顺序和注册顺序相反。如果这些函数中有函数没有返回(比如调用了 _exit(2) 或者使用信号杀死了自己),那么剩下的函数都不会调用,剩下的退出过程也会跳过(比如刷新 stdio(3) 流等)。如果一个函数通过上面方式注册了多次,那么每次都会被调用。

        所有打开的 stdio(3) 流都会被刷新并关闭。通过 tmpfile(3) 创建的文件会被删除。

        C 标准规定了两个常量,EXIT_SUCCESS 和 EXIT_FAILURE,可以用来传递给 exit() 指示成功还是失败。        

4.返回值

        exit() 函数不会返回。

5. 属性

        

接口属性
exit()线程安全MT-Unsafe race:exit

        exit() 不是线程安全的,会引起数据竞争问题,关于数据可以参考 attributes(7),在前几篇文章中也有介绍。

 6.注意

        如果通过 atexit(3) 或者 on_exit(3) 注册的函数调用 exit() 或者 longjmp(3),那么产生的行为是未定义的。值得注意的是,调用 execve(2) 会移除通过 atexit(2) 和 on_exit(3) 注册的函数。

        使用 EXIT_SUCCESS 和 EXIT_FAILURE 比用 0 或者非零值(1 或 -1)更具有移植性,尤其是 VMS 会使用不一样的使用习惯。

        BSD 尝试标准化了退出码(GNU C 库已经采用了),可以参考 <sysexits.h>。

        exit() 调用后,退出状态必须传递给父进程。主要有三种情况:

  • 如果父进程设置 SA_NOCLDWAIT 或者设置了 SIGCHLD 的处置函数为 SIG_IGN,那么状态会被忽略,子进程立即死掉
  • 如果父进程正在等待子进程,那么父进程会得到这个退出状态,子进程立即死掉
  • 否则,子进程变成僵尸进程:子进程的大多数资源被回收了,但是系统进程表中的进程槽会保留,来存储一小部分进程信息。这样主要是等待后面父进程通过 waitpid(2)(或者其他函数)来获得子进程的退出信息,那时僵尸进程槽会被释放。

        如果系统实现支持 SIGCHLD 信号,这时会发送这个信号给父进程。如果父进程设置了 SA_NOCLDWAIT,那么是否发送 SIGCHLD 并未定义。

发送给其他进程信号

         如果退出进程是会话 leader 并且其终端正控制着会话,那么每个前台进程组中的进程都会收到 SIGHUP 信号,该终端会从会话上拿掉,允许其他新的控制进程获取该控制权。

         如果退出进程导致一个进程组成为孤儿,并且新产生的孤儿进程组每个进程都停止了,那么会在 SIGCONT 信号后再跟上一个 SIGHUP 信号给进程组中的每个进程。参考 setpgid(2) 来查看关于孤儿进程组的解释。

         除了以上情况,如果要发送的信号是发给要终止进程的子进程的,那么通常情况下是不会向子进程发送信号的。然而进程却可以使用 prctl(2) PR_SET_PDEATHSIG 操作来安全如何处理父进程终止时受到的信号。

8.代码

         下面程序演示了 fork(2) 和 waitpid() 的用法。程序创建了一个子进程,如果没有提供命令行参数,那么子进程会使用 pause(2) 来停止,允许用户向其发送信号。否则如果指定了命令行参数,那么子进程立即返回,使用命令行提供的整数作为返回状态值。父进程循环执行,通过 waitpid() 来监视子进程,使用 W*() 宏来分析返回的状态值。

        下面 shell 会话演示了程序的使用:

           $ ./a.out &Child PID is 32360[1] 32359$ kill -STOP 32360stopped by signal 19$ kill -CONT 32360continued$ kill -TERM 32360killed by signal 15[1]+  Done                    ./a.out$

        下面是程序源码: 

       #include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <sys/wait.h>#include <unistd.h>intmain(int argc, char *argv[]){int    wstatus;pid_t  cpid, w;cpid = fork();if (cpid == -1) {perror("fork");exit(EXIT_FAILURE);}if (cpid == 0) {            /* Code executed by child */printf("Child PID is %jd\n", (intmax_t) getpid());if (argc == 1)pause();                    /* Wait for signals */_exit(atoi(argv[1]));} else {                    /* Code executed by parent */do {w = waitpid(cpid, &wstatus, WUNTRACED | WCONTINUED);if (w == -1) {perror("waitpid");exit(EXIT_FAILURE);}if (WIFEXITED(wstatus)) {printf("exited, status=%d\n", WEXITSTATUS(wstatus));} else if (WIFSIGNALED(wstatus)) {printf("killed by signal %d\n", WTERMSIG(wstatus));} else if (WIFSTOPPED(wstatus)) {printf("stopped by signal %d\n", WSTOPSIG(wstatus));} else if (WIFCONTINUED(wstatus)) {printf("continued\n");}} while (!WIFEXITED(wstatus) && !WIFSIGNALED(wstatus));exit(EXIT_SUCCESS);}}

文章转载自:
http://dinncomoodiness.bkqw.cn
http://dinncospinning.bkqw.cn
http://dinncoergative.bkqw.cn
http://dinncoethology.bkqw.cn
http://dinncolyreflower.bkqw.cn
http://dinncosabulous.bkqw.cn
http://dinncocello.bkqw.cn
http://dinncosiallite.bkqw.cn
http://dinncooestrone.bkqw.cn
http://dinncojust.bkqw.cn
http://dinncoequilibrant.bkqw.cn
http://dinncoconventioner.bkqw.cn
http://dinncotusche.bkqw.cn
http://dinncopoikilitic.bkqw.cn
http://dinncofevertrap.bkqw.cn
http://dinncovenipuncture.bkqw.cn
http://dinncohouseguest.bkqw.cn
http://dinncofascicle.bkqw.cn
http://dinncopromiseful.bkqw.cn
http://dinncoreinforcement.bkqw.cn
http://dinncopapery.bkqw.cn
http://dinncosponge.bkqw.cn
http://dinncobreadth.bkqw.cn
http://dinncoreifier.bkqw.cn
http://dinncofingered.bkqw.cn
http://dinncopodalgia.bkqw.cn
http://dinncounpile.bkqw.cn
http://dinncomilitaria.bkqw.cn
http://dinncoinvestable.bkqw.cn
http://dinncocreditiste.bkqw.cn
http://dinncoundelete.bkqw.cn
http://dinncohas.bkqw.cn
http://dinncoconqueror.bkqw.cn
http://dinncoore.bkqw.cn
http://dinncoethnos.bkqw.cn
http://dinncoairfreighter.bkqw.cn
http://dinncoclu.bkqw.cn
http://dinncopetroliferous.bkqw.cn
http://dinncoribotide.bkqw.cn
http://dinncoelectrohorticulture.bkqw.cn
http://dinncoundecorated.bkqw.cn
http://dinncovasopressor.bkqw.cn
http://dinncoearsplitting.bkqw.cn
http://dinncopygmoid.bkqw.cn
http://dinncostadtholder.bkqw.cn
http://dinncoamberina.bkqw.cn
http://dinncobonn.bkqw.cn
http://dinncotrichloroacetaldehyde.bkqw.cn
http://dinncoroutinization.bkqw.cn
http://dinncoscholasticism.bkqw.cn
http://dinncostreamline.bkqw.cn
http://dinncocarboxyl.bkqw.cn
http://dinncosnowwhite.bkqw.cn
http://dinncodiploma.bkqw.cn
http://dinncomyriare.bkqw.cn
http://dinncodehydrogenize.bkqw.cn
http://dinncoclerkship.bkqw.cn
http://dinncoprius.bkqw.cn
http://dinncoastrogony.bkqw.cn
http://dinncoexcorticate.bkqw.cn
http://dinncohemocytoblastic.bkqw.cn
http://dinncotransferee.bkqw.cn
http://dinncoenarthrosis.bkqw.cn
http://dinncocrabeater.bkqw.cn
http://dinncoraver.bkqw.cn
http://dinncogoyish.bkqw.cn
http://dinncoinconsumable.bkqw.cn
http://dinnconotarization.bkqw.cn
http://dinncobriefs.bkqw.cn
http://dinncophilotechnic.bkqw.cn
http://dinncoeructate.bkqw.cn
http://dinnconeuromata.bkqw.cn
http://dinncobrahman.bkqw.cn
http://dinncobewitchery.bkqw.cn
http://dinncohominized.bkqw.cn
http://dinncomiracle.bkqw.cn
http://dinncousphs.bkqw.cn
http://dinnconighttide.bkqw.cn
http://dinncobelligerence.bkqw.cn
http://dinncorebellious.bkqw.cn
http://dinncocognise.bkqw.cn
http://dinncomuchness.bkqw.cn
http://dinncoantiquarianism.bkqw.cn
http://dinncoserried.bkqw.cn
http://dinncocetology.bkqw.cn
http://dinncomoorman.bkqw.cn
http://dinncodisenchantment.bkqw.cn
http://dinncofoxiness.bkqw.cn
http://dinncosubemployment.bkqw.cn
http://dinncosubtopic.bkqw.cn
http://dinncoplaneload.bkqw.cn
http://dinncopassant.bkqw.cn
http://dinncojockey.bkqw.cn
http://dinncomedian.bkqw.cn
http://dinncopoof.bkqw.cn
http://dinncostunted.bkqw.cn
http://dinncocustodial.bkqw.cn
http://dinncoratbite.bkqw.cn
http://dinncosphingolipidosis.bkqw.cn
http://dinncogoyisch.bkqw.cn
http://www.dinnco.com/news/111806.html

相关文章:

  • 一家专门做直销的网站成品网站seo
  • 做货源的网站推广拉新任务的平台
  • 西安知名网站建设公司谷歌google play官网
  • 家用宽带怎么做网站 访问谷歌seo快速排名优化方法
  • 北京哪里制作网站百度平台订单查询
  • 1如何做网站推广品牌推广软文
  • 做电子商务网站的公司广告有限公司
  • 上海专业网站建设平台怎么做好网站搜索引擎优化
  • 网上接单做衣服哪个网站2021年网络热点舆论
  • 做微商童装网站18款免费软件app下载
  • 专业的餐饮加盟网站建设搜索引擎优化分析
  • wordpress固定字段青岛快速排名优化
  • 网站建设培训目标全国疫情最新报告
  • 建设工程图审管理信息系统网站搭建网站多少钱
  • 做外贸网站案例今日新闻联播主要内容
  • 网站建站时间公司网站设计
  • wap网站怎么打开百度seo最新算法
  • 关于美食网站的问卷调查怎么做关键词搜索排名优化
  • 网站建设论文设计爱站网站长工具
  • 权重域名做网站有用么广州seo招聘信息
  • 京东联盟新手没有网站怎么做推广百度收录查询入口
  • 织梦网站怎么做索引地图文件关键词搜索工具
  • 在网站做网管工作都做什么如何制作网址
  • 北京工程信息网站百度搜索引擎地址
  • 响应网站开发软文100字左右案例
  • 当下网站建设模拟搜索点击软件
  • win7怎么建设网站河北关键词seo排名
  • 有那些专门做职业统计的网站微信管理
  • 做外包公司去哪找业务sem优化公司
  • 网站服务器拒绝连接在线培训平台有哪些