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

做影视网站用什么源码云南手工活外发加工网

做影视网站用什么源码,云南手工活外发加工网,京东的网站建设规划,17一起来做网站一、信号概念 信号就是软件中断。每当程序收到一个信号,都需要按指定的方法去处理。以下是UNIX系统的信号表。 其中core表示产生一个复制了该进程内存映像的core文件,它保存了程序现场,可以使用gdb来调试。 二、signal() signal()函数用于改…

一、信号概念

        信号就是软件中断。每当程序收到一个信号,都需要按指定的方法去处理。以下是UNIX系统的信号表。

         其中core表示产生一个复制了该进程内存映像的core文件,它保存了程序现场,可以使用gdb来调试。

二、signal()

        signal()函数用于改变某个信号的响应方法。

         第一个参数是信号的编号,有一组宏定义可以使用。第二个参数是函数指针,要么是SIG_IGN(忽略信号)或SIG_DFL(默认方式),要么是自己定义的一个处理函数的地址。

        返回值是调用signal()之前的处理函数的指针。注意这里man手册中sighandler_t的typedef并没有在标准C中定义,这里只是方便阅读而加上的,所以如果要接受它的返回值,要么用void (*func)(int),要么自己typedef.

        还需注意的是:除了SIG_IGN外,其他的信号处理都会打断阻塞的系统调用。例如当在执行sleep的时候收到一个信号,sleep会提前结束,并且errno会被设置为EINTR。

三、可重入函数

        该概念一般用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入 OS 调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。在linux中部分库函数被提供了以“_r”结尾的可重入版本。

满足下列条件的函数多数是不可重入的:

  • 函数体内使用了静态(static)的数据结构;
  • 函数体内调用了 malloc() 或者 free() 函数;
  • 函数体内调用了标准 I/O 函数; 

四、信号的响应过程

        内核为每个进程都维护了两个位图:mask位图和pending位图。

mask :用来表示当前信号是否被屏蔽,1表示未屏蔽,0表示屏蔽,初始值一般全为1.
pending: 用来记录当前进程收到哪些信号,1表示收到对应信号,0表示未收到,初始值一般全为0.

        当有信号来时,对应的pending位置为1,程序被内核的中断机制打断,保存当前的执行现场,进入到内核态排队。当从内核态回到用户态时会将mask位图 &(按位与) 上pending位图来判断有哪些信号,执行对应的信号处理函数,此时对应的mask位和pending位均置为0,当执行完信号处理函数后,将对应的mask位置为1。

        注意:程序从接收到信号到响应信号会有一个不可避免的延迟,只有程序从内核态切换到用户态的时候,才会比较 mask位图 和 pending位图。且标准信号的响应没有严格的顺序。

思考:

1.如何忽略掉一个信号?

   答:将masks置为0.

2.标准信号为什么要丢失?

  答:pending无论收到多少个信号都是置为1,无法计数。

五、kill(),raise(),alarm(),pause()

1.kill()

        kill()函数用于向其他进程或进程组发送信号。

         pid参数不同取值有不同意义:

  1. 正整数:如果pid是一个正整数,那么kill()函数将会向该进程ID对应的进程发送指定的信号。

  2. 0:如果pid为0,kill()函数将会向与调用进程(当前进程)属于同一进程组的所有进程发送信号。

  3. -1:如果pid为-1,kill()函数将会向所有有权限发送信号的进程(除了init进程)发送信号。init进程是所有进程的祖先,因此除了init进程之外的所有进程都可以收到该信号。

  4. 负整数:如果pid是一个负整数,kill()函数将会向进程组ID等于-pid的进程组发送信号。这里的-pid表示将pid取反,得到一个负整数值,表示对应的进程组ID。

    返回值:成功返回0,否则返回-1,并设置对应errno.

2.raise()

        raise()函数用于给当前进程发送信号。

         在单线程程序中相当于kill(getpid(),sig); 在多线程程序中相当于pthread_kill(pthread_self(),sig);

3.alarm()

        alarm()函数会在调用的seconds秒后给当前进程发送一个SIGALRM信号,该信号默认处理方式一般为终止。

         如果多次调用alarm(),会以最后一个为准,并且前一个alarm剩余的时间会作为后一个alarm()的返回值。

        当seconds为0时不会产生alarm,通常用来取消之前的alarm.

4.pause()

        pause()函数会暂停当前线程直到收到一个信号。

         在一些操作系统中sleep()就是用alarm()+pause()实现的。

http://www.yayakq.cn/news/603459/

相关文章:

  • wordpress 菜单添加图片seo优秀网站分析
  • 网站代运营合同模板天猫商城官方网站
  • 网站开发用到的技术网站制作策划书
  • 科技设计网站建设建设网站网站首页
  • 做电子商务系统网站建设分销平台都有哪些
  • 网站建设签约vs2017 如何做网站
  • 成都微信网站建设多少wordpress浮动小人插件
  • 公司网站不备案哪里的佛山网站建设
  • 国内做网站比较好的公司wordpress 产品多图
  • 百度站长app登录建设银行网站打不开
  • 即墨医院网站制作公司手机网站制作教程软件
  • 山亭网站建设浙江响应式网站建设制作
  • 电子商务网站建设html三星企业网站建设ppt
  • 桐庐县网站建设兰州网站制作联系方式
  • 北京厦门网站优化哪个网上购物网站好
  • 招聘网站怎么做才能吸引人静态网站特点
  • 国外设计网站及介绍深圳网站 制作信科便宜
  • 提高网站排名的软件市场营销案例分析
  • 1核2g+做网站专业网页制作室
  • 离退休部门网站建设情况云主机添加网站
  • 河南省住房和建设厅安监站网站当当网的网站怎么做的
  • 招聘网站可以做两份简历吗潍坊地区网站制作
  • 网站建设公司哪家好要选磐石网络百度网站名称和网址
  • 网页设计网站名字鞍山做网站团队
  • 网站开发广告宣传wordpress 5.0.3文章编辑
  • 高端做网站公司网站建设模板坏处
  • 在线设计海报网站进行企业网站建设规划
  • lol视频网站源码谷歌seo优化中文章
  • 教师做爰网站简单的房源展示网站开发
  • 网站首页包含的内容wordpress 短视频主题