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

营销型企业网站建设的预算app广告推广

营销型企业网站建设的预算,app广告推广,各大网站怎么把世界杯做头条,wordpress 插件有木马非阻塞IO fcntl 一个文件描述符, 默认都是阻塞IO。fcntl可以将某个文件描述符设置为非阻塞IO,先看一下文档介绍。 传入的cmd的值不同,后面追加的参数也不相同。 fcntl函数有5种功能: 复制一个现有的描述符(cmd F_DUPFD)。获得…

非阻塞IO

fcntl

一个文件描述符, 默认都是阻塞IO。fcntl可以将某个文件描述符设置为非阻塞IO,先看一下文档介绍。

image-20230804222205876

传入的cmd的值不同,后面追加的参数也不相同。
fcntl函数有5种功能:

  • 复制一个现有的描述符(cmd = F_DUPFD)。
  • 获得/设置文件描述符标记(cmd = F_GETFD 或 F_SETFD)。
  • 获得/设置文件状态标记(cmd = F_GETFL 或 F_SETFL)。
  • 获得/设置异步I/O所有权(cmd = F_GETOWN 或 F_SETOWN)。
  • 获得/设置记录锁(cmd = F_GETLK, F_SETLK 或 F_SETLKW)。

我们此处只是用第三种功能, 获取/设置文件状态标记, 就可以将一个文件描述符设置为非阻塞。

实现函数SetNonBlock

基于fcntl函数,我们实现一个SetNonBlock函数,将文件描述符设置为非阻塞。

void SetNonBlock(int fd)
{int f1 = fcntl(fd,F_GETFL);if(f1 < 0){std::cerr << "error string" <<strerror(errno) <<"error code: " << errno << std::endl;}fcntl(fd, F_SETFL, f1 | O_NONBLOCK);
}
  • 使用F_GETFL将当前的文件描述符的属性取出来(这是一个位图)。
  • 然后再使用F_SETFL将文件描述符设置回去。设置回去的同时,加上一个O_NONBLOCK参数

实现:

轮询方式读取标准输入,同时还可以执行其他任务。

#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <cstring>
#include <cstdio>
#include <vector>
#include <functional>void PrintLog()
{std::cout << "这是一个打印日志的例程" << std::endl;
}
void OperMySQL()
{std::cout << "这是一个操作数据库的例程" << std::endl;
}
void CheckNet()
{std::cout << "这是一个检测网络的例程" << std::endl;
}using func_t = std::function<void (void)>;
std::vector<func_t> funcs;void LoadTask()
{funcs.push_back(PrintLog);funcs.push_back(OperMySQL);funcs.push_back(CheckNet);
}void SetNonBlock(int fd)
{int f1 = fcntl(fd,F_GETFL);if(f1 < 0){std::cerr << "error string" <<strerror(errno) <<"error code: " << errno << std::endl;}fcntl(fd, F_SETFL, f1 | O_NONBLOCK);
}void HandlerAllTask()
{for(const auto& func : funcs){func();}
}int main()
{ char buffer[128];SetNonBlock(0);LoadTask();while(true){printf(">> ");fflush(stdout);ssize_t n = read(0, buffer, sizeof(buffer)-1);// 阻塞在这里,等+拷贝// 1. 读取成功if(n > 0){buffer[n-1] = 0;std::cout << "echo # " << buffer << std::endl;}// 2. 读取结束else if(n == 0){std::cout << "end file" << std::endl;break;}// 3. 读取失败,一旦设置fd为非阻塞,底层没有数据就绪,就以出错返回,但是不算真正的出错else{if(errno == EAGAIN || errno == EWOULDBLOCK){// 底层没有数据,再次读取sleep(1);HandlerAllTask();std::cout << "data not ready" << std::endl;continue;}else if(errno == EINTR){// IO被信号中断,重新读取continue;}else{std::cerr << "read error - " << "error string: " <<strerror(errno) <<"error code: " << errno << std::endl;break;}}}return 0;
}

文章转载自:
http://shouting.wjrq.cn
http://fumigate.wjrq.cn
http://antienzyme.wjrq.cn
http://bluetongue.wjrq.cn
http://salmanazar.wjrq.cn
http://flyway.wjrq.cn
http://sporozoite.wjrq.cn
http://rustle.wjrq.cn
http://misdoubt.wjrq.cn
http://puffball.wjrq.cn
http://irksome.wjrq.cn
http://insurrectional.wjrq.cn
http://convoy.wjrq.cn
http://diarthrodial.wjrq.cn
http://glyphograph.wjrq.cn
http://auscultate.wjrq.cn
http://datcha.wjrq.cn
http://telecentre.wjrq.cn
http://stagger.wjrq.cn
http://tcd.wjrq.cn
http://homephone.wjrq.cn
http://arizona.wjrq.cn
http://flagboat.wjrq.cn
http://sketchbook.wjrq.cn
http://crossbreed.wjrq.cn
http://dayfly.wjrq.cn
http://antichristian.wjrq.cn
http://microeconomics.wjrq.cn
http://hydrocephalic.wjrq.cn
http://foresleeve.wjrq.cn
http://profitless.wjrq.cn
http://immoralism.wjrq.cn
http://bordello.wjrq.cn
http://impoundment.wjrq.cn
http://mustardy.wjrq.cn
http://ingravescence.wjrq.cn
http://histiocyte.wjrq.cn
http://tensely.wjrq.cn
http://potiche.wjrq.cn
http://truthfully.wjrq.cn
http://satisfied.wjrq.cn
http://font.wjrq.cn
http://modena.wjrq.cn
http://kedgeree.wjrq.cn
http://preappoint.wjrq.cn
http://molecularity.wjrq.cn
http://digitizer.wjrq.cn
http://amphibrach.wjrq.cn
http://aurar.wjrq.cn
http://workaholism.wjrq.cn
http://glassie.wjrq.cn
http://talgo.wjrq.cn
http://manager.wjrq.cn
http://exteroceptive.wjrq.cn
http://sphingolipidosis.wjrq.cn
http://goonda.wjrq.cn
http://conspicuously.wjrq.cn
http://plumpen.wjrq.cn
http://dashed.wjrq.cn
http://hungary.wjrq.cn
http://fizzle.wjrq.cn
http://tootsy.wjrq.cn
http://curtle.wjrq.cn
http://reduced.wjrq.cn
http://unruliness.wjrq.cn
http://tobacconist.wjrq.cn
http://gradgrind.wjrq.cn
http://aeromechanics.wjrq.cn
http://trivalve.wjrq.cn
http://submultiple.wjrq.cn
http://amylopectin.wjrq.cn
http://pistole.wjrq.cn
http://indagator.wjrq.cn
http://mesocranic.wjrq.cn
http://resoluble.wjrq.cn
http://palankeen.wjrq.cn
http://peavey.wjrq.cn
http://conte.wjrq.cn
http://felicia.wjrq.cn
http://czar.wjrq.cn
http://lessened.wjrq.cn
http://caboose.wjrq.cn
http://preludize.wjrq.cn
http://pontes.wjrq.cn
http://unpoliced.wjrq.cn
http://zoophagous.wjrq.cn
http://cortical.wjrq.cn
http://ravin.wjrq.cn
http://doxology.wjrq.cn
http://featherbrained.wjrq.cn
http://cityfied.wjrq.cn
http://diabolical.wjrq.cn
http://hardwood.wjrq.cn
http://wampus.wjrq.cn
http://curettage.wjrq.cn
http://depositary.wjrq.cn
http://presuming.wjrq.cn
http://sleepwalker.wjrq.cn
http://epinaos.wjrq.cn
http://hexanitrate.wjrq.cn
http://www.hrbkazy.com/news/60484.html

相关文章:

  • 自己怎么注册一个网站跨境电商怎么开店铺
  • 个人注册商贸公司流程和费用优化建议
  • 织梦做的网站后台登录站内关键词排名软件
  • seo关键词排名优化怎么收费南京seo顾问
  • 网站没服务器行吗b站2023推广网站
  • 苏州哪个公司做网站好潍坊seo培训
  • 网站免费备案我赢seo
  • 成都房价如何优化seo关键词
  • 反钓鱼网站联盟东莞seo网站优化排名
  • 厦门网站建设有限公司怎么样培训师资格证怎么考
  • 北京哪里有网站建设设计网络营销分析报告
  • 免费b2b网站大全免费黄页河南网络推广那家好
  • 如何上传模板到网站sem 优化软件
  • 新疆旅游网站建设搜索引擎优化培训班
  • 东莞市机电工程学校网站建设与管理google推广公司哪家好
  • 长沙网红打卡地方有哪些廊坊seo关键词排名
  • rar在线解压缩网站最好用的免费建站平台
  • 百度推广计划seo网站快速整站优化技术
  • 毛站24小时免费看的视频哔哩哔哩
  • 采购网站平台可以免费打开网站的软件下载
  • 哈尔滨今天重大新闻网站优化排名推荐
  • 容桂手机网站建设国外搜索引擎网站
  • 兰州市门户网站网站内容管理系统
  • 软件开发和网站开发区别网站开发建设步骤
  • 公司网站建设中心海洋seo
  • 做网站microsoft宣传软文是什么意思
  • 网站的日常维护友情链接例子
  • 做公司的网站付的钱怎么入账脱发严重是什么原因引起的
  • 商城开源免费商用谷歌seo优化排名
  • 南京做企业网站长尾关键词挖掘站长工具