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

网站后台登陆破解潜江资讯网58同城

网站后台登陆破解,潜江资讯网58同城,网站运营与管理的一个目的是,贵州省建设银行招聘网站上篇文章#xff1a;Linux操作系统3-文件与IO操作1(从C语言IO操作到系统调用)-CSDN博客 本篇代码Gitee仓库#xff1a;myLerningCode 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点#xff1a;文件描述符fd与文件重定向 目录 一. 文件描述… 上篇文章Linux操作系统3-文件与IO操作1(从C语言IO操作到系统调用)-CSDN博客 本篇代码Gitee仓库myLerningCode · 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点文件描述符fd与文件重定向 目录 一. 文件描述符fd及其分配规则 二. 文件重定向 2.1       命令 2.2 重定向的本质⭐ 2.3 使用dup2完成重定向 ⭐ a dup2完成输出重定向 b dup2完成追加重定向 c dup2输入重定向  ​编辑 三. 如何理解Linux下一切皆文件 四. 下篇内容C语言FILE与用户级缓冲区与文件系统 一. 文件描述符fd及其分配规则 在上一篇文章中我们使用open系统调用打开文件之后。看到返回的fd是一个数字并且我们输出了stdin,stdout,stderror的文件fd。发现它们分别是1,2,3。 当时的测试代码如下 #include iostream#include cstdio #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h#define MY_FILE log.txtint main() {umask(0);int fd1 open(MY_FILE, O_RDWR | O_CREAT | O_TRUNC, 0666);printf(stdin fd - %d\n, stdin-_fileno);printf(stdout fd - %d\n, stdout-_fileno);printf(stderr fd - %d\n, stderr-_fileno);printf(log.txt fd - %d\n, fd1);return 0; } 测试结果如下 如果我们关闭了stderr在打开log.txt的话log.txt的文件fd是不是就是2 测试代码 注意不能直接使用系统调用close关闭FILE结构体的_fileno需使用fclose #include iostream#include cstdio #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h#define MY_FILE log.txtint main() {umask(0);//close(stderr-_fileno); 这样会导致文件描述错误资源泄漏等问题fclose(stderr); //正确关闭//或者直接//close(2);int fd1 open(MY_FILE, O_RDWR | O_CREAT | O_TRUNC, 0666);printf(stdin fd - %d\n, stdin-_fileno);printf(stdout fd - %d\n, stdout-_fileno);printf(stderr fd - %d\n, stderr-_fileno);printf(log.txt fd - %d\n, fd1);return 0; } 测试结果 所以文件描述fd的分配规则是从小到大按照循环发方式找到文件描述符表中的最小且没有被占用的位置。 假如我们关闭了1号文件fd再去向stdout输出数据会发生什么事情 测试代码 #include iostream#include cstdio #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h#define MY_FILE log.txtint main() {umask(0);close(1);int fd1 open(MY_FILE, O_RDWR | O_CREAT | O_TRUNC, 0666);int cnt 10;while(cnt--){fprintf(stdout,Hello YZC! [%d]\n,cnt); //向stdout输出10条数据}return 0; } 测试结果 可以看到我们向屏幕输出数据转化为向log.txt这个文件中输出数据。  这种就是我们的文件输出重定向由屏幕重定向到log.txt这个文件中 二. 文件重定向 2.1       命令 文件重定向广泛来说有三种输出重定向追加重定向输入重定向。 在Linux 中我们使用命令  即可完成输出重定向 完成追加重定向 完成输入重定向 2.2 重定向的本质⭐ 我们知道进程PCB通过文件描述符表找到并访问对应的文件。 重定向的本质就是C语言上层用的fd不改变在内核中改变fd对应的truct_file*的地址。         比如上面举例中我们上层没有关闭stdout而是关闭了stdout原本的标准输出fd2号。让后让指向log.txt的文件fd写入到stdout中。这样就完成了向log.txt的标准输出重定向。 2.3 使用dup2完成重定向 ⭐ dup2可以复制文件描述符fd。函数原型如下 //所需头文件 #include unistd.hint dup2(int oldfd, int newfd);//解释 //将oldfd文件文件描述符fd拷贝到newfd //或者说 将newfd内容更改为oldfd的内容//返回值 //失败返回-1设置错误码。成功返回文件描述符 注意dup2不是简单的更改0,1,2... 。而是将指针数组中的0,1,2的内容struct_file更改 a dup2完成输出重定向 用法举例 #include iostream#include cstdio #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h#define MY_FILE log.txtint main() {umask(0);int fd1 open(MY_FILE, O_RDWR | O_CREAT | O_TRUNC, 0666);//将fd 1中的内容由指向标准输出更改为指向log.txtdup2(fd1,1);int cnt 10;while(cnt--){fprintf(stdout,Hello YZC! [%d]\n,cnt); //向stdout输出10条数据}return 0; } 测试结果 可见通过dup2我们完成了输出重定向 b dup2完成追加重定向 想要完成追加重定向只要将重定向文件的写入方式更改为追加即可 测试举例 #include iostream#include cstdio #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h#define MY_FILE log.txtint main() {umask(0);//以追加的方式打开而不是TRUNC清空int fd1 open(MY_FILE, O_RDWR | O_CREAT | O_APPEND, 0666);//将fd 1中的内容由指向标准输出更改为指向log.txtdup2(fd1,1);int cnt 10;while(cnt--){fprintf(stdout,Hello YZC! [%d]\n,cnt); //向stdout输出10条数据}return 0; } 测试结果 c dup2输入重定向  我们将文件描述符表中0的内容由标准输入转为由log.txt文件输入 #include iostream#include cstdio #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h#define MY_FILE log.txtint main() {// 以只读方式打开int fd1 open(MY_FILE, O_RDONLY);// 更改0的中的内容由标准输入变为由log.txt输入dup2(fd1, 0);char buffer[64];while (true){printf(请输入);// 向buffer输入数据,若为空直接跳出循环if (fgets(buffer, sizeof(buffer), stdin) NULL)break;printf(%s, buffer);}return 0; } 测试结果如下: 三. 如何理解Linux下一切皆文件 我们知道被打开的文件有文件描述结构体这个结构体中包含了文件的各种属性。 struct file {//文件的各种属性int type;int status;......//文件的读写方法指针int (*readp)();int (*write)(); } 站在struct file的角度来说各种文件或者设备键盘显示器鼠标磁盘等统一都是 struct file。         而我们用户通过struct file去调用其中的读写函数指针就能够调用具体的文件或者设备的读写方法。         通过这种虚拟文件系统我们就能够摒弃底层硬件的差别。而使用统一的视角去看待各种文件和硬件设备使用统一的文件接口进行操作。所以说Linux下一切皆文件         这种设计是不是也符合多态的原则 Linux中的源码  四. 下篇内容C语言FILE与用户级缓冲区与文件系统
http://www.hkea.cn/news/14490889/

相关文章:

  • 网站建设 财务归类wordpress 调取缩略图
  • 和京东一样做电子产品的网站成都企业建站模板
  • 网站建设预期效果公司简介模板免费下载完整版免费
  • 堵博网站建设四川互联网广告人
  • 网站后台公告id修改贵州人才网最新招聘建筑类
  • 苏州网站设计公司有哪些网站管理怎么做
  • 谷歌网站推广优化seo是什么岗位
  • 网站模板 数据库做高端企业网站
  • 邢台网站制作哪家强长春模板建站公司
  • h5微网站建设多少钱网站结构合理
  • 网站建设平台排行榜asp网站有哪些
  • 网站收录就是没排名网站快速收录技术
  • 牡丹江市建设局网站合肥正规制作网站公司
  • 抓好门户网站 建设网站优化推广seo
  • 教学成果奖网站建设微信公众号前端开发
  • 温州网站推广模板怎么制作古装视频
  • 欧美风格网站源码wordpress 自定义字段 查询
  • 建设银行明细网站能查多久怎么做网站实惠
  • 企业网站的建设泰安注册公司
  • 肇庆网站开发公司天津seo排名收费
  • 开发三维seo常用方法
  • semicircle郑州seo排名扣费
  • 网站建设的内容wordpress 缩略图加上alt
  • 网站是哪家公司做的今天郴州刚刚发生的事
  • 网站开发需求分析中性能需求分析手机网站搭建用什么软件?
  • 自己做网站赚钱自己做的网站怎么放上网
  • 网站添加flv视频代码网站建设工作基本流程
  • 南昌seo网站管理2019怎么做网站赚钱
  • 天津哪里有做网站的公司今天的新闻热点
  • asp.net 4.0网站开发高级视频教程查询企业网