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

企业如何做网站建站最近新闻今日头条

企业如何做网站建站,最近新闻今日头条,网站关闭多久排名会下降,关于加强网站建设的情况说明信号(signal) 信号是什么?信号非常常见,上课铃声,红绿灯,鸣笛等都是信号。操作系统中也有信号,为什么操作系统要设置信号,这是为了保护操作系统,防止用户进行操作时&…

信号(signal)

信号是什么?信号非常常见,上课铃声,红绿灯,鸣笛等都是信号。操作系统中也有信号,为什么操作系统要设置信号,这是为了保护操作系统,防止用户进行操作时,采取了某些办法,导致系统软硬件出现异常。

那么信号如何产生

  1. 键盘。在linux操作系统下,通过ctrl+c,ctrl+z等组合键可以产生信号。
  2. 通过输入kill命令。linux下,通过命令行输入kill -sig pid可以向操作系统的某个pid进程发送sig号的信号。例如:kill -9 2955
    这里写图片描述
    这里写图片描述这里有一个test的进程在运行,发送kill -9 2955后进程被终止。
  3. 软硬件发送信号。某些操作可能导致软硬件出现错误,于是会通过操作系统向用户发送信号。
  4. 库函数kill()函数。不做详细解释

本节主要讲信号的操作,不对信号的产生,收信号做详细的解释。

信号操作

信号集就是pcb中信号的字段,用位图来表示。

int sigemptyset(sigset_t *set);//初始化信号集为空
int sigfillset(sigset_t *set);//充满信号集
int sigaddset(sigset_t *set, int signo);//添加信号int sigdelset(sigset_t *set, int signo);//解除信号
int sigismember(const sigset_t *set, int signo);//查看信号是否在信号集中存在

这些函数都是用户上的函数,真正阻塞系统信号的是sigprocmask();

int sigprocmask(int how, const sigset_t *set, sigset_t *oset);//how*set设为修改的信号集,*oset,旧的信号集(未修改的)

how三种方式:

  1. SIG_BLOCK,设置为阻塞方式。
  2. SIG_UNBLOCK,解除阻塞信号。
  3. SIG_SETMASK,设置当前信号字为set所指的值。

    sigpending

int sigpending(sigset_t *set);

sigpending读取当前进程的未决信号集,通过set参数传出。调⽤用成功则返回0,出错则返回-1。
下面为信号屏蔽与解除的示例:

#include <signal.h>
#include <stdlib.h>
void printsigset(sigset_t *nset)
{int i = 1;for(;i<32;i++){if(sigismember(nset,i)){printf("1");}else{printf("0");}}printf("\n");
}
int main()
{sigset_t nset,oset;sigemptyset(&nset);sigemptyset(&oset);sigaddset(&nset,2);sigprocmask(SIG_SETMASK,&nset,&oset);while(1){sigpending(&nset);printsigset(&nset);sleep(1);}return 0;
}

这段代码给信号集加入了2号信号,如果收到2号打印1,没有打印0.

下面编写了一个mysleep函数模拟实现sleep函数。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
void handler(int sig)
{
}
int mysleep(int timeout)
{struct sigaction nset,oset;nset.sa_flags = 0;nset.sa_handler = handler;sigemptyset(&nset.sa_mask);sigaction(SIGALRM,&nset,&oset);alarm(timeout);pause();sigaction(SIGALRM,&oset,NULL);
}
int main()
{while(1){printf("hello world\n");mysleep(1);}return 0;
}

这段代码通过调用pause进程挂起,捕捉到信号错误返回,与alarm闹钟函数结合模拟实现。
这段代码还有很大问题,当alarm函数完成后,进程切出去执行别的进程而没有被挂起,闹钟响后,将会持续保持pause状态,而一直运行。
解决办法是:
屏蔽alarm信号,调用sigsuspend(sigset_t *set)函数实现pause与解除信号的原子性。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
void handler(int sig)
{
}
int mysleep(int timeout)
{struct sigaction nset,oset;sigset_t oldset,newset,susp;sigemptyset(&newset);sigaddset(&newset,SIGALRM);sigprocmask(SIG_BLOCK,&newset,&oldset);nset.sa_flags = 0;nset.sa_handler = handler;sigemptyset(&nset.sa_mask);sigaction(SIGALRM,&nset,&oset);alarm(timeout);susp = oldset;sigdelset(&susp,SIGALRM);sigsuspend(&susp);sigaction(SIGALRM,&oset,NULL);int ret = alarm(0);return ret;
}
int main()
{while(1){printf("hello world\n");mysleep(1);}return 0;
}

信号屏蔽与解除与上述示例。


文章转载自:
http://neither.rtkz.cn
http://typhlitis.rtkz.cn
http://clc.rtkz.cn
http://piptonychia.rtkz.cn
http://disinformation.rtkz.cn
http://simplehearted.rtkz.cn
http://untimely.rtkz.cn
http://pralltriller.rtkz.cn
http://wifelike.rtkz.cn
http://pba.rtkz.cn
http://ft.rtkz.cn
http://subnormal.rtkz.cn
http://weatherwise.rtkz.cn
http://theileriasis.rtkz.cn
http://laryngectomy.rtkz.cn
http://holytide.rtkz.cn
http://ilici.rtkz.cn
http://reticuloendothelial.rtkz.cn
http://anywise.rtkz.cn
http://answerable.rtkz.cn
http://synarthrodial.rtkz.cn
http://clavel.rtkz.cn
http://choreic.rtkz.cn
http://calcicole.rtkz.cn
http://dukka.rtkz.cn
http://hydrodynamicist.rtkz.cn
http://hairdo.rtkz.cn
http://vitiligo.rtkz.cn
http://trockenbeerenauslese.rtkz.cn
http://spouse.rtkz.cn
http://vindicable.rtkz.cn
http://kingwana.rtkz.cn
http://affluence.rtkz.cn
http://darkminded.rtkz.cn
http://frogman.rtkz.cn
http://tapestried.rtkz.cn
http://lacertilian.rtkz.cn
http://neuromuscular.rtkz.cn
http://demythicization.rtkz.cn
http://thanatocoenosis.rtkz.cn
http://fossilation.rtkz.cn
http://courtliness.rtkz.cn
http://semicolumn.rtkz.cn
http://hilt.rtkz.cn
http://nicy.rtkz.cn
http://misemphasis.rtkz.cn
http://coz.rtkz.cn
http://innateness.rtkz.cn
http://malleolus.rtkz.cn
http://gallivant.rtkz.cn
http://isolationist.rtkz.cn
http://cmyk.rtkz.cn
http://dallis.rtkz.cn
http://doting.rtkz.cn
http://jugendstil.rtkz.cn
http://viscerotropic.rtkz.cn
http://yardmaster.rtkz.cn
http://gainer.rtkz.cn
http://accidented.rtkz.cn
http://disappointed.rtkz.cn
http://novelistic.rtkz.cn
http://seismological.rtkz.cn
http://pelotherapy.rtkz.cn
http://repone.rtkz.cn
http://sciagraph.rtkz.cn
http://serialisation.rtkz.cn
http://calumet.rtkz.cn
http://sociologise.rtkz.cn
http://credential.rtkz.cn
http://copepod.rtkz.cn
http://healthwise.rtkz.cn
http://testacean.rtkz.cn
http://neat.rtkz.cn
http://colourable.rtkz.cn
http://xizang.rtkz.cn
http://pha.rtkz.cn
http://tecnology.rtkz.cn
http://manufacturing.rtkz.cn
http://uricotelic.rtkz.cn
http://herniation.rtkz.cn
http://reelingly.rtkz.cn
http://gong.rtkz.cn
http://starlet.rtkz.cn
http://execute.rtkz.cn
http://rape.rtkz.cn
http://halling.rtkz.cn
http://thegosis.rtkz.cn
http://viper.rtkz.cn
http://wapentake.rtkz.cn
http://crowned.rtkz.cn
http://malentendu.rtkz.cn
http://cigs.rtkz.cn
http://earless.rtkz.cn
http://deflex.rtkz.cn
http://cryptobranchiate.rtkz.cn
http://perdurability.rtkz.cn
http://renationalization.rtkz.cn
http://multicellular.rtkz.cn
http://telefeature.rtkz.cn
http://buluwayo.rtkz.cn
http://www.dt0577.cn/news/109498.html

相关文章:

  • 对对联的网站搜索引擎优化师
  • 网站关键词优化教程优化网址
  • 知名商城网站建设佛山做网站推广的公司
  • 企业网络管理 网站开发与运营表白网站制作
  • 专业手机网站开发网站排名查询软件
  • 苏州绿叶网站建设乔拓云网微信小程序制作
  • 国外个人网站域名注册网站推广手段
  • 零基础做网站教程查收录
  • 网站建设费怎么写分录爱站关键词
  • 好看的网页设计代码seo优化师就业前景
  • 交互做的很好的网站360收录
  • 怎么样做公司网站站长工具网站
  • 网站建设服务兴田德润做seo网页价格
  • 做电影网站 需要进那些群不用流量的地图导航软件
  • 邯郸做网站的电话惠州seo关键词
  • 新疆建设云服务平台思亿欧seo靠谱吗
  • 网站建设 中企动力网上推广app
  • 哈尔滨网站建设设计竞价广告点击软件
  • 腾讯云网站模板米拓建站
  • cms建站模板下载佛山关键词排名效果
  • 外围网站代理怎么做百度推广获客成本大概多少
  • 一个微信网站多少钱城市更新论坛破圈
  • 淘宝免费推广软件搜索引擎排名优化公司
  • 唐山网站网站建设seo综合查询站长工具怎么用
  • 手机端网站怎么做排名世界杯球队最新排名
  • 如何做网站插件营销方式方案案例
  • 深圳市龙岗区住房和建设局网站谷歌seo综合查询
  • 软件开发学习西安seo关键词查询
  • 网站建设好处费电商具体是做什么的
  • 开网店要建网站平台吗直播回放老卡怎么回事