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

怎么制作公司自己网站做相片软件网站

怎么制作公司自己网站,做相片软件网站,深圳宝安区怎么样,三亚网站设计公司目录 ​编辑 系统接口进行文件访问 open 接口介绍 文件描述符fd 重定向 缓冲区 1、缓冲区是什么#xff1f; 2、为什么要有缓冲区#xff1f; 3、怎么办#xff1f; 我们先来复习一下#xff0c;c语言对文件的操作#xff1a; C默认会打开三个输入输出流#xf…目录 ​编辑 系统接口进行文件访问 open 接口介绍 文件描述符fd 重定向 缓冲区 1、缓冲区是什么 2、为什么要有缓冲区 3、怎么办 我们先来复习一下c语言对文件的操作 C默认会打开三个输入输出流分别是stdin, stdout, stderr 1 #includestdio.h2 3 int main()4 {5 FILE *fpfopen(log.txt,w);6 if(fpNULL)7 {8 perror(error!);9 return 1;10 }11 fprintf(fp,hello,%d,%s\n,10,sxh);12 fclose(fp);13 return 0;14 } 系统接口进行文件访问 操作文件除了上述C接口当然C也有接口其他语言也有我们还可以采用系统接口来进行文件访问 #includestdio.h#includestring.h#includesys/types.h#includesys/stat.h#includefcntl.h#includeunistd.hint main(){umask(0);int fd open(log.txt,O_WRONLY | O_CREAT |O_TRUNC,0666);if(fd0){ perror(open);return 1;}//const char *message hello Linux!\n;const char * message aaaa\n;write(fd,message,strlen(message));close(fd);}open(log.txt,O_WRONLY | O_CREAT |O_TRUNC,0666);以写方式打开不存在就创建存在就先清空相当于c语言中的  “w”  方式 open 接口介绍 open man 2 open #includ e sys/types.h        #include sys/stat.h        #include fcntl.h        int open(const char *pathname, int flags);        int open(const char *pathname, int flags, mode_t mode)        int creat(const char *pathname, mode_t mode); pathname要打开或创建的目标文件 flags: 打开文件时可以传入多个参数选项用下面的一个或者多个常量进行“或”运算构成;  常见的参数有                         O_RDONLY: 只读打开                         O_WRONLY: 只写打开                         O_CREAT : 若文件不存在则创建它。需要使用mode选项来指明新文件的访问权限                         O_APPEND: 追加写 mode: mode 只有 当 在 flags 中使用 O_CREAT 时才有效 , 否则被忽略. 返回值                 成功新打开的文件描述符                 失败-1 文件描述符fd 我们通过系统调用I/O打开一个文件的返回值就是文件描述符 int fd open(log.txt,O_WRONLY | O_CREAT |O_TRUNC,0666); 这里fd就是log.txt的文件描述符 如果我们同时打开三个文件并把这三个文件的文件描述符打印出来会发现 文件描述符是从3开始的那0、1、2呢 Linux进程默认情况下会有3个缺省打开的文件描述符分别是标准输入0 标准输出1 标准错误2. 0,1,2对应的物理设备一般是键盘显示器显示器 根据上述的图我们可以知道 open干什么 1、创建file 2、开辟文件缓冲区的空间加载文件数据延后 3、查看进程的文件描述符表 4、file地址填入对应的表下标中 5、返回下标 重定向 看一下下面的代码 1 #includestdio.h2 #includesys/types.h3 #includesys/stat.h4 #includefcntl.h5 #includeunistd.h6 #includestring.h7 #includestdlib.h8 const char *filenamelog.txt;9 10 int main()11 {12 //close(0);13 close(1);14 //close(2);15 int fd open(filename,O_CREAT | O_WRONLY | O_TRUNC,0666);16 if(fd0)17 {18 perror(open);19 return 1;20 }21 printf(printf,fd:%d\n,fd);22 fprintf(stdout,fprintf,fd:%d\n,fd);23 24 fflush(stdout);25 26 27 close(fd);28 return 0;29 30 }先看现象 1、如果我们关闭的是0打印出来的log.txt的文件描述符是0关闭的是2则打印出来的文件描述符是2关闭的是1则不会显示出来因为文件描述符1表示的是显示器而我们把显示器关掉了自然打印不出来 2、我们会在log.txt中打印出printf和fprintf的内容 现象解释 文件描述符规则查看自己的文件描述表分配最小的没有使用的文件描述符 由于我们把显示器给关掉了那么文件描述符1就是最小的没有使用的这样log.txt就会被分配1为文件描述符这其实就是一个重定向操作 看下面的图 一开始fd_array[1]指向的是显示器由于close(1),加上open log.txt这样fd_array[1]指向的就是log.txt; 因为重定向的本质是在内核中改变文件描述符特点下标的内容与上层无关 fprintf()/printf()  ---stdout  ---struct FILE ---stdout ----_fileno 1; 所以fprintf()/printf() 看的就是_fileno 1由于重定向后log.txt的fd为1 自然fprintf()/printf()的内容打印到log.txt中 如果我们一直用这种手动重定向的方式比较麻烦可以用系统调用dup2() 看一下代码 1 #includestdio.h2 #includesys/types.h3 #includesys/stat.h4 #includefcntl.h5 #includeunistd.h6 #includestring.h7 #includestdlib.h8 const char *filenamelog.txt;9 10 int main()11 {12 int fd open(filename,O_CREAT | O_WRONLY | O_TRUNC,0666);13 //dup2(fd,1);14 15 printf(hello world,fd:%d\n,fd);16 fprintf(stdout,hello world\n);17 fflush(stdout);18 close(fd);19 return 0;20 }上述的代码运行结果会直接打印到显示器上 如果把dup2(fd,1)复原显示器上不会显示而是在log.txt上显示 其实本质就是将fd覆盖1 指向下标的内容 缓冲区 1、缓冲区是什么 缓冲区就是一段内存空间 2、为什么要有缓冲区 给上层提供高效的IO体验间接提高整体效率 3、怎么办 a、刷新策略                1、立即刷新  fflush(stdout)c语言的刷新、fsync(fd)(系统调用的刷新)                2、行刷新  显示器                3、全缓冲  缓冲区写满才刷新普通文件      b、特殊情况                进程退出系统会自动刷新                强制刷新
http://www.w-s-a.com/news/562521/

相关文章:

  • 广西企业建站邯郸景区网站制作
  • 开发商城网站多少钱城厢区建设局网站
  • 网站外链多的危害天水市建设局网站
  • 网站接入商学交互设计网站
  • 目前最新的网站后台架构技术综述什么网站可以做名片
  • 成都建站长沙做网站美工的公司
  • 湖南省住房与城乡建设厅网站平顶山网站关键词优化
  • 购物网站前台功能模块汕头网站设计电话
  • 网站你懂我意思正能量免费wordpress菜单底部导航代码
  • 一个主机可以建设多少个网站山东高端网站建设
  • 长沙网站建设搭建网络营销做得好的公司
  • 如何做网站的后台管理石家庄seo关键词排名
  • 给自己公司做个网站山东做外贸网站的公司
  • 张家港网站建设培训江苏省建设工程网站系统
  • html个人网站桂林建站
  • 湛江网站优化快速排名wordpress文章页面宽度
  • 自己建网站怎么弄唯品会一家专门做特卖的网站
  • 做文化传播公司网站做搜狗pc网站点
  • 免费的黄冈网站有哪些平台可以聊天呢要查询一个网站在什么公司做的推广怎么查
  • 凡客建站登录入口网站建设先进部门评选标准
  • 响应式设计 手机网站政务中心建设网站
  • 如何做卖衣服的网站网站登录接口怎么做
  • 网站源码下载了属于侵权吗499全包网站建设
  • 怎样创建网站信息平台网络推广官网首页
  • 网站建设的课程网站 逻辑结构
  • 开通企业网站搬瓦工暗转wordpress
  • 成都网站建设有名的公司怎么做出有品牌感的网站
  • 中国网站的建设淘宝数据网站开发
  • 深圳建站网站模板wordpress 文章最长
  • 服务器建立网站建网站做seo