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*

转载于:https://www.cnblogs.com/coding4/p/5604879.html

STDIN_FILENO相关推荐

  1. linux stdin STDIN_FILENO 区别

    stdin 由标准C库实现, STDIN_FILENO是指0号文件描述符是linux内核(类unix操作系统)专有概念 STDIN_FILENO与stdin的区别: STDIN_FILENO: 1). ...

  2. STDIN_FILENO和stdin区别

    在unix系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FI ...

  3. linux c之STDIN_FILENO的作用及与stdin的区别

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

  4. stdin和STDIN_FILENO的区别

    在unix系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FI ...

  5. 对stdin,stdout 和STDOUT_FILENO,STDIN_FILENO的学习

    在unix系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FI ...

  6. STDIN_FILENO 与stdin的区别

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

  7. STDIN_FILENO和STDOUT_FILENO

    转自:https://blog.csdn.net/sinat_25457161/article/details/48548231 STDIN_FILENO:接收键盘的输入 STDOUT_FILENO: ...

  8. UNIX环境高级编程笔记(2)- STDIN_FILENO、STDOUT_FILENO和stdin、stdout的区别

    目录 前言 一.STDIN_FILENO.STDOUT_FILENO介绍 二.stdin.stdout介绍 三.代码例程 1.文件描述符的使用 2.流的使用 3.代码标记 总结 前言 本章主要通过UN ...

  9. STDIN_FILENO/STDOUT_FILENO与 stdin/stdout 的区别

    转载from:https://blog.csdn.net/yeyuangen/article/details/6781999 1.STDIN_FILENO的作用 STDIN_FILENO属于系统API ...

最新文章

  1. Base:一种 Acid 的替代方案
  2. 商城app实现注册送红包
  3. 58同城买二手电脑的感想
  4. 【CSS3动画】transform对文字及图片的旋转、缩放、倾斜和移动
  5. 支付宝的一些小问题,注意事项等等,等用得时候在来写写
  6. 项目调研的误区和关键点
  7. splunk VS elasticsearch
  8. 怎样以最快的速度导入mysql
  9. CocosBuilder 的使用
  10. SQL数据库日志文件丢失,日志文件恢复的办法
  11. JS 常见的 6 种继承方式
  12. 台式计算机怎么开声音,台式机如何设置声音
  13. 学习笔记——STM32摄像头OV7725(二)
  14. 揭秘潜伏在QQ群里面的低调高收入者
  15. Java顺序表 实现扑克牌游戏简单 (梭哈 / 斗牛)
  16. 初面蚂蚁金服,三面腾讯,已拿offer!绝对干货分享
  17. HCIA-5G网络架构及关键技术
  18. IT 路,梦里思路长。
  19. Linux运行python文件出现以下错误:terminate called after throwing an instance of ‘std::runtime_error‘
  20. eclipse写python怎么样_eclipse python 使用教程(怎么用eclipse写python)

热门文章

  1. 只有一台笔记本,如何使用 GPU 进行深度学习
  2. 苹果设备类型对照表----支持iPhone、iPad、Apple Watch
  3. javafx-按键绑定事件按钮
  4. 更改ItemDataBound事件中的Datagrid单元格值
  5. 为啥科技公司都怕 iOS14.5正式版更新
  6. 微信昵称含表情入库报错
  7. 李宏毅深度学习|Datawhale-7月 Task07 总结
  8. 快速解决 PS 2023 插件未经正确签署问题,超简单方便
  9. 京微齐力:基于HMEP060的心率血氧模块开发(1:FPGA发送多位指令)
  10. 数据库应用系统开发案例 │ 图书现场采购系统