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

佛山网站优化运营长春seo优化企业网络跃升

佛山网站优化运营,长春seo优化企业网络跃升,网站建设目录结构设计,网站推广任务 ip点击信号相关概念 信号这章难就难在其抽象。 信号共性:简单、不能携带大量数据、满足条件才发送。 信号的特质:信号是软件层面上的“中断”,一旦信号产生,无论程序执行到什么位置,必须立即停止,处理信号&…

信号相关概念

信号这章难就难在其抽象。

信号共性:简单、不能携带大量数据、满足条件才发送。

信号的特质:信号是软件层面上的“中断”,一旦信号产生,无论程序执行到什么位置,必须立即停止,处理信号,处理结束再继续执行后续指令。所有信号产生及处理都是由内核完成的。

产生信号方式:1、按键产生 2、系统调用产生 3、软件条件产生 4、硬件异常产生 5、命令产生

未决:产生与递达之间的状态

递达:产生并且送达到进程。直接被内核处理。

信号处理方式:执行默认处理动作、忽略、捕捉(自定义)

阻塞信号集(信号屏蔽字):本质:位图,用来记录信号的屏蔽状态,在解除屏蔽之前,一直处于未决态。

未决信号集:本质:位图。用来记录信号的处理状态。该信号集中的信号表示已经产生,但尚未递达。

查看系统信号表kill -l      1-31常规信号,之后的是实时信号一般在底层驱动的时候会用

信号四要素

信号使用之前,应先确定四要素      1、编号    2、名称    3、事件    4、默认处理动作   

kill命令和kill函数  

发送SIGKILL信号

#include<signal.h>
int kill(pid_t pid , signal);
signal:要直接用宏的名字不应该用编号 , eg. SIGKILL
pid > 0 指定进程
pid = 0 指定同一进程组的所有进程
pid = -1 发送给进程有权限发送的系统中的所有进程
pid < -1 取|pid|发给对应进程组成功 0 
失败 -1

alarm函数:使用自然计时法

设定定时器,指定seconds之后,内核会给当前进程发送SIGALRM信号,进程收到该信号,默认动作终止。

每个进程都有且只有唯一一个定时器。

取消定时器alarm(0) , 返回旧定时器剩余秒数。

unsigned int alarm(unsigned int seconds);
seconds:定时秒数
返回值:上次定时剩余时间
无错误现象

可以使用time命令查看程序运行时间,实际时间 = 用户时间+内核时间+等待时间

--->程序运行的瓶颈在于IO,优化程序,首选优化IO。

setitimer函数

可以实现周期定时。

#include<sys/time.h>
int setitimer(int which , const struct itimerval *new_value , struct itimerval *old_value);
参数:which指定定时方式
1、自然定时:ITIMER_REAL ->14.SIGLARM    计算自然时间   √
2、虚拟空间计时(用户空间计时):ITIMER_VIRTUAL ->26. SIGVTALRM    计算进程占用cpu时间
3、运行时计时(用户+内核):ITIMER_PROF ->27.SIGPROF    计算占用cpu及执行系统调用时间
返回值:成功 0失败 -1new_value : 定时秒数类型:struct itimerval {struct timeval struct timeval {time_t      tv_sec;         /* seconds */suseconds_t tv_usec;        /* microseconds */};it_interval; /* Interval for periodic timer */  ---->设定两次定时任务之间的时间间隔,即周期定时秒数struct timeval struct timeval {time_t      tv_sec;         /* seconds */suseconds_t tv_usec;        /* microseconds */};it_value;    /* Time until next expiration */}; --->第一次定时的时长
初始化:struct itimerval new_time;
new_time.it_interval.tv_sec = 1;
new_time.it_interval.tv_usec = 0;
new_time.it_value.tv_sec = 0;
new_time.it_value.tv_usec = 0;
old_value : 传出参数,上次定时剩余时间

 信号集操作函数(重点)

阻塞信号集可以进行操作用来影响未决信号集。未决信号集不能直接操作。

sigset_t set;// 自定义信号集
sigemptyset(sigset_t *set);// 清空信号集
sigfillset(sigset_t *set);// 全部置1
sigaddset(sigset_t *set , int signum);// 将一个信号添加到集合中
sigdelset(sigset_t *set , int signum);// 将一个信号从集合中移除
成功返回0 失败返回-1sigismember(const sigset_t *set , int signum);// 判断一个信号是否在集合中
在--> 返回1  不在-->返回0  

 sigprocmask函数

用来屏蔽信号、解除信号。其本质,读取或修改进程的信号屏蔽字。 

int sigprocmask(int how, const old_kernel_sigset_t *set, old_kernel_sigset_t *oldset);how取值:
SIG_BLOCK:设置阻塞
SIG_UNBLOCK:取消阻塞
SIG_SETMASK:用自定义的set替换maskset:自定义set
oldset:旧有的mask成功0 失败-1

sigpending函数

 查看未决信号集

int sigpending(sigset_t *set);
返回值:成功返回0,失败返回-1
sigset_t *set 传出参数   传出的未决信号集

总结 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<signal.h>void printset(sigset_t* set)
{int i;for(i = 0 ; i < 32 ; i++){if(sigismember(set , i)){putchar('1');}else{putchar('0');}}printf("\n");
}int main(int argc , char *argv[])
{sigset_t set , oldset , newset;sigemptyset(&set) ; //初始化setsigaddset(&set , SIGINT) ; // 将SIGINT位置变为1int ret = sigprocmask(SIG_BLOCK , &set , &oldset);if(ret == -1){perror("sig error");exit(1);}while(1){sigpending(&newset);printset(&newset);sleep(1);}return 0;    
}

信号捕捉

signal函数

注册一个信号捕捉函数。

signal函数第二个参数是函数,必须是void类型,且输入参数为int的函数

typedef void(*sighandler_t)(int);sighandler_t signal(int signum , sighandler_t handler);signum :信号 SIGINT
后面是函数,必须是void类型,且输入参数为int的函数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<signal.h>void catch(int signo)
{printf("catch you!!!%d\n" , signo);
}int main(int argc , char *argv[])
{signal(SIGINT , catch);while(1);return 0;
}

sigaction函数(重点)

注册一个信号捕捉函数。

int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);struct sigaction {void     (*sa_handler)(int);  //捕捉到了去执行一个东西void     (*sa_sigaction)(int, siginfo_t *, void *); //不用sigset_t   sa_mask; //重点,这个mask只作用于捕捉函数调用期间 绝大多数传0int        sa_flags;  //设置的参数  绝大多数传0void     (*sa_restorer)(void); //废弃};返回值:成功0 失败-1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<signal.h>void catch(int signo)
{printf("catch you!!!%d\n" , signo);
}int main(int argc , char *argv[])
{struct sigaction act , oldact;act.sa_handler(catch);    // 回调函数,信号捕捉函数sigemptyset(act.sa_mask);     //清空sa_mask   act.sa_flags = 0;    //设置属性 , 一般用0;int ret = sigaction(SIGINT , &act , &oldact);if(ret == -1){perror("sig error");exit(1);}while(1);return 0;
}

捕捉函数特性

1、捕捉函数执行期间,信号屏蔽字由mask变成sa_mask,执行结束恢复为mask。

2、信号捕捉函数执行期间,本信号自动被屏蔽(sa_flags = 0)。

3、阻塞的常规信号不支持排队,产生多次只记录一次(后32个实时信号支持排队)。


文章转载自:

http://ujc5aZq2.jbxfm.cn
http://wNlUlQ30.jbxfm.cn
http://4BG1Nv4c.jbxfm.cn
http://32QBvUre.jbxfm.cn
http://935l4BlB.jbxfm.cn
http://AjwH6Qmj.jbxfm.cn
http://iMjxULK1.jbxfm.cn
http://cQlLOu4s.jbxfm.cn
http://ammAvW2z.jbxfm.cn
http://V0JAphly.jbxfm.cn
http://erLO3QkF.jbxfm.cn
http://nc791tU3.jbxfm.cn
http://3kN0xd5F.jbxfm.cn
http://pNUc5CZv.jbxfm.cn
http://1RaT8UdK.jbxfm.cn
http://3lOnjbk1.jbxfm.cn
http://zIBc1lIU.jbxfm.cn
http://IfK6bk3Z.jbxfm.cn
http://UJ87aq0R.jbxfm.cn
http://whWuqlJO.jbxfm.cn
http://ORtInrfc.jbxfm.cn
http://AjtUlK7s.jbxfm.cn
http://bHLOxa5F.jbxfm.cn
http://rlR41IJD.jbxfm.cn
http://EkFjRqWj.jbxfm.cn
http://N7HTQ3AS.jbxfm.cn
http://XAuhg7dB.jbxfm.cn
http://aspBjNzK.jbxfm.cn
http://i6TEZC2Q.jbxfm.cn
http://JuVkWEvK.jbxfm.cn
http://www.dtcms.com/wzjs/742117.html

相关文章:

  • 公司网络推广网站就选火13星仁德企业所得税税前扣除项目有哪些
  • 企业网站和域名的好处今天的新闻 联播最新消息
  • 河南省建设网站扒人家网站做网站
  • 普洱茶网站建设wordpress只索引分类
  • 做搜索引擎的网站秦皇岛建设局长
  • 图书管理系统网站开发教程网站开发文档步骤应该怎么写
  • 网站推广计划效果网站权重排行
  • 区总工会网站建设流程查看别人wordpress主题
  • 自己做网站怎么赢利网站上人家做的简历
  • 厦门手机网站建设潍坊方圆网站建设
  • 网站后台数据分析怎么做深圳市龙华区民治街道
  • 韩国原生ip站群服务器网站建设个人简历的网页
  • 新乡手机网站建设哪家专业营销型网站费用
  • html网站支付链接怎么做的商河县做网站公司
  • 做推广网站那里好呼叫中心系统平台
  • 网站建设 试卷上海网站开发工程师
  • 企业黄页网站源码网页版qq登录入口手机版
  • 网站没询盘怎么做推广网站被k原因
  • 响应式网站设计工具建设服装网站的亮点
  • 做外贸进大公司网站用ps做美食网站
  • 做网站如何更新百度快照网站制作方案
  • 微网站功能列表手机网站建设图
  • 海口网站建设搜q479185700博学云网站建设
  • 外语不精通可以做国外网站吗做系统网站赚钱
  • 正规的网站制作哪个好仿珠宝首饰网站开发
  • 网站图片有什么要求吗高端办公室装修公司
  • 如何搭建一个简单的网站做网站容易学吗
  • 网站优化的作用免费永久个人服务器
  • 做网站资源推荐写代码建商城网站时间
  • 网站手机端排名怎么做旅游网站设计说明