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

科普文章在那个网站做网站确定关键词 如何做

科普文章在那个网站做,网站确定关键词 如何做,案例分析网站,广西建设网查询模拟实现FILE以及认识缓冲区 刷新缓冲逻辑图自定义实现如何强制刷新内核缓冲区例子 刷新缓冲逻辑图 自定义实现 mystdio.h #pragma once #include stdio.h#define NUM 1024 #define BUFF_NOME 0x1 #define BUFF_LINE 0x2 #define BUFF_ALL 0x4typedef struct _MY_FIL… 模拟实现FILE以及认识缓冲区 刷新缓冲逻辑图自定义实现如何强制刷新内核缓冲区例子 刷新缓冲逻辑图 自定义实现 mystdio.h #pragma once #include stdio.h#define NUM 1024 #define BUFF_NOME 0x1 #define BUFF_LINE 0x2 #define BUFF_ALL 0x4typedef struct _MY_FILE {int fd;//接受描述符的值int flags;//用来记录打开方式char outputbuffer[NUM];//缓冲区保存int current;//记录缓冲区有多少字符 }MY_FILE;MY_FILE* my_fopen(const char* path,const char* mode); size_t my_fwrite(const void* ptr,size_t size,size_t nmemb,MY_FILE* stream); int my_fclose(MY_FILE* fp); int my_fflush(MY_FILE* fp);mystdio.c #include mystdio.h #include string.h #include sys/types.h #include sys/stat.h #include fcntl.h #include stdlib.h #include unistd.h #include assert.hMY_FILE* my_fopen(const char* path,const char* mode) {//1.识别标志位打开方式int flag 0;if(strcmp(mode,r) 0) flag | O_RDONLY;else if(strcmp(mode,w) 0) flag | (O_CREAT | O_WRONLY | O_TRUNC);else if(strcmp(mode,a) 0) flag | (O_CREAT | O_WRONLY | O_APPEND);else if(strcmp(mode,r) 0) flag | (O_WRONLY | O_RDONLY);else if(strcmp(mode,w) 0) flag | (O_CREAT | O_WRONLY | O_RDONLY | O_TRUNC);else if(strcmp(mode,a) 0) flag |(O_CREAT | O_WRONLY | O_RDONLY | O_APPEND);//2.尝试打开文件mode_t m 0666;int fd 0;if(flag | O_CREAT){fd open(path,flag,m);}else {fd open(path,flag);}if(fd 0) return NULL;//3.给用户返回MY_FILE对象需要先进行构建MY_FILE *mf (MY_FILE*)malloc(sizeof(MY_FILE));if(mf NULL){close(fd);return NULL;}//4.初始化MY_FILE对象mf-fd fd;mf-flags 0;mf-flags | BUFF_LINE;memset(mf-outputbuffer,\0,sizeof(mf-outputbuffer));mf-current 0;//5.返回打开的文件return mf; }//冲刷缓冲区 int my_fflush(MY_FILE* fp) {assert(fp);//将用户缓冲区的数据通过系统调用接口冲刷给oswrite(fp-fd,fp-outputbuffer,fp-current);fp -current 0;//fsync(fp-fd);return 0; }//这里返回的是字节数不是模拟实现的输入的、个数nmemb size_t my_fwrite(const void* ptr,size_t size,size_t nmemb,MY_FILE* stream) {//1、缓冲区如果已经满了就直接写入if(stream-current NUM)my_fflush(stream);//2.根据缓冲区剩余情况进行数据拷贝即可size_t user_size size * nmemb;size_t my_size NUM - stream-current;size_t write 0;if(my_size user_size) {memcpy(stream-outputbuffer stream-current,ptr,user_size);//3.更新计数器字段stream-current user_size;write user_size;}else {//如果缓冲区内存不够存放的话指挥存放它的最大值memcpy(stream-outputbufferstream-current,ptr,my_size);stream-current my_size;write my_size;}//4.开始计划刷新他们高效体现在哪里 --- TODO//不发生刷新的本质不进行写入就是不进行IO不进行调用系统调用所以my_fwrite函数调用会非常快数据会暂时保存在缓冲区中//可以在缓冲区中挤压多份数据统一进行刷新写入本质就是一次IO可以IO更多的数据提高IO效率if(stream-flags BUFF_ALL){if(stream-current NUM) my_fflush(stream);}else if(stream-flags BUFF_LINE){if(stream-outputbuffer[stream-current-1] \n){my_fflush(stream);}}else {//TODO}return write; }int my_fclose(MY_FILE* fp) {assert(fp);//1.冲刷缓冲区if(fp-current 0) my_fflush(fp);//2.关闭文件close(fp-fd);//3.释放堆空间free(fp);//4.指针置NULL --- 可以设置fp NULL;return 0; }main.c #include mystdio.h #include string.h #include unistd.h #include stdio.h #define MYFILE log.text int main() {MY_FILE* fp my_fopen(MYFILE,w);if(fp NULL) return 1;const char* str hello my my_fwrite;int cnt 10;//操作文件while(cnt){char buffer[1024];snprintf(buffer,sizeof(buffer),%s:%d\n,str,cnt--);size_t size my_fwrite(buffer,strlen(buffer),1,fp);sleep(1);printf(当前成功写入%lu个字节\n,size);}my_fclose(fp);return 0; }如何强制刷新内核缓冲区 根据文件描述符进行强制刷新 main.c #include mystdio.h #include string.h #include unistd.h #include stdio.h #define MYFILE log.text int main() {MY_FILE* fp my_fopen(MYFILE,w);if(fp NULL) return 1;const char* str hello my my_fwrite;int cnt 10;//操作文件while(cnt){char buffer[1024];snprintf(buffer,sizeof(buffer),%s:%d\n,str,cnt--);if(cnt % 5 0){//当cnt是五的倍数的时候就会强制刷新一次my_fwrite(buffer,strlen(buffer),1,fp);}}my_fclose(fp);return 0; }例子 像我们进行scanf输入的时候其实本身我们输入的是一串字符串将这个字符串读入对应的缓冲区buff后然后通过分解工作进一步传入系统系统系统在通过一些指令输入输出想要的结果
http://www.w-s-a.com/news/232889/

相关文章:

  • vs网站开发教程昆山普立斯特做的有网站
  • 柳州网站seo网站swordpress 输出内容
  • 网站设计制作电话多少网站流量下降
  • 沈阳做网站推广的公司唐山哪家做网站好
  • 国外著名网站建设公司WordPress破解怎样主题修复
  • 网站建设济南云畅网络广州电力建设有限公司网站
  • 查看公司信息的网站思特奇是外包公司吗
  • 制作企业网站的目的啥都能看的浏览器
  • 做网站可以用哪些语言如何进行网站运营与规划
  • 做效果图网站有哪些电子商城网站制作数据库
  • 小刘网站建设wordpress调用php文件上传
  • 建设银行对账网站网络营销广告案例
  • 做网站开票是多少个点的票wordpress扫码提交数据库
  • 织梦网站改版需要怎么做企业网站备案管理系统
  • 大规模网站开发语言宁夏建设职业技术学院网站
  • 寻花问柳专注做一家男人爱的网站北京展台设计制作
  • 中卫网站设计做自己的卡盟网站
  • 广州网站推广自助做网站人家直接百度能搜到的
  • 电子商务网站建设目标及利益分析安徽建设厅网站施
  • 制作网站策划书网站建设公司的性质
  • 哪个网站可以做免费宣传简单的网页设计网站
  • 福州专业网站制作公司金湖建设局网站
  • 好的移动端网站模板下载兰州线上广告推广
  • 宁波高端建站深圳品牌营销策划机构
  • 权威网站优化价格建设厅科技中心网站首页
  • 保定模板建站软件腾讯云做淘客网站
  • 单位建设一个网站的费用正规刷手机单做任务网站
  • 北京定制网站价格开网店怎么卖到外国
  • 做网站 后端是谁来做的工程建设指挥部网站
  • wordpress建站 云打印昆明 网站设计