1.STDIN_FILENO的作用
STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。

操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。

2.区别

1)数据类型不一致:
stdin类型为 FILE*
STDIN_FILENO类型为 int
使用stdin的函数主要有:fread、fwrite、fclose等,基本上都以f开头
使用STDIN_FILENO的函数有:read、write、close等
2)stdin等是FILE *类型,属于标准I/O,高级的输入输出函数。在<stdio.h>。
STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2,属于没有buffer的I/O,直接调用系统调用,在<unistd.h>。

3)STDIN_FILENO 是标准输入的文件描述符
详见/usr/include/unistd.h
代码:
/* Standard file descriptors. */
#define STDIN_FILENO 0 /* Standard input. */
#define STDOUT_FILENO 1 /* Standard output. */
#define STDERR_FILENO 2 /* Standard error output. */

4)层次不一样。STDIN 属于标准库处理的输入流,其声明为 FILE 型的,对应的函数前面都有f开头,如fopen/fread/fwrite/fclose 标准库调用等
STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。

标准库内封装了系统 API 调用,如 fread 内部实现调用 read。

5)操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。

6)曾经很纳闷,为什么一个整形fd(STDIN_FILENO=0)就可以代表一个打开的文件呢?
后来明白了,和我们的手机号是类似的,手机号只是一个9位数的整形,但是在移动通话网络里,它就可以用来区分不同的手机终端。
标准C++一级提供的文件操作函数库都是用FILE*来表示文件,stdin就是指向标准输入设备文件的FILE*

最新文章

  1. CentOS上安装软件错误提示:configure: error: no acceptable C compiler found in $PATH
  2. 构建第一个maven工程
  3. Lock较synchronized多出的特性
  4. phpstorm配置svn
  5. nginx+tomcat实现动静分离
  6. 创建link server链接服务器碰到的问题及解决办法
  7. hdu 5640 King&#39;s Cake(BestCoder Round #75)
  8. delphi xe memory leak produced in WSDLLookup.pas
  9. Java-struts2 之值栈问题
  10. 转 ---- Asp.net mvc项目分页功能
  11. vim命令---存阅
  12. Spring2.0集成Quartz1.5.2调度框架
  13. 10.PHP 教程_PHP If...Else 语句
  14. Oracle 调用存储过程执行CRUD的小DEMO
  15. 创建ASPState数据库
  16. Mysql中实现多表关联查询更新操作
  17. hdu 5274 Dylans loves tree
  18. 正则匹配ts的引用
  19. GitLab 社区版 11.0.2用户管理教程
  20. 7.docker日志收集

热门文章

  1. k近邻算法python实现 -- 《机器学习实战》
  2. 1.java中Comparor与Comparable的问题
  3. JMH 性能测试框架
  4. Python 一键同步windows和linux数据(基于pscp.exe)
  5. JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
  6. 2016 安全行业全景图——By 安全牛
  7. Python基础学习之 函数
  8. python 的两个模块xlwt,xlrd,写入和读取Excel数据
  9. datagrid 编辑
  10. 谁说程序员不懂爱情【Her】