转载自:https://blog.csdn.net/yeyuangen/article/details/6781999

1、STDIN_FILENO的作用:

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

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

2、区别
①数据类型不一致:
stdin类型为 FILE*
STDIN_FILENO类型为 int
使用stdin的函数主要有:fread、fwrite、fclose等,基本上都以f开头
使用STDIN_FILENO的函数有:read、write、close等

②stdin等是FILE *类型,属于标准I/O,高级的输入输出函数。在<stdio.h>。
STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2,属于没有buffer的I/O,直接调用系统调用,在<unistd.h>。

③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. */

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

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

⑥曾经很纳闷,为什么一个整形fd(STDIN_FILENO=0)就可以代表一个打开的文件呢?

后来明白了,和我们的手机号是类似的,手机号只是一个9位数的整形,但是在移动通话网络里,它就可以用来区分不同的手机终端。

标准C++一级提供的文件操作函数库都是用FILE*来表示文件,stdin就是指向标准输入设备文件的FILE*。

stdin、stdout、stderr和STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO的区别和联系相关推荐

  1. linux 输出重定向_Linux--文件描述符和stdin,stdout,stderr

    基本概念 1. 文件描述符 总览: 当一个程序成功向操作系统请求访问一个打开的文件, 内核会返回一个指向内核中全局文件表(global file table)中的入口点(entry)的文件描述符. 文 ...

  2. 利用stdin stdout stderr及POSIX-linux机制重定向写日志

    利用stdin stdout stderr及POSIX-linux机制重定向写日志 由open返回的文件描述符一定是该进程尚未使用的最小描述符.由于程序启动时自动打开文件描述符0.1.2,因此第一次调 ...

  3. C语言调试技巧:stdin,stdout,stderr

    stdin,stdout,stderr流 介绍 stdin,stdout,stderr是标准的输入输出流.其中,stdin是访问键盘输入,stdout和stderr分别是向终端输出数据. 关键函数 f ...

  4. stdin, stdout, stderr

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 在通常情况下,Linux/UNIX每个程 ...

  5. WorkerMan源码分析(resetStd方法,PHP中STDIN, STDOUT, STDERR的重定向)

    WorkerMan中work.php中 resetStd 方法中代码如下 public static function resetStd(){if (!static::$daemonize || st ...

  6. Linux Shell 文件描述符 及 stdin stdout stderr 重定向

    Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已 ...

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

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

  8. linux下的各个语言中stdin,stdout和stderr理解

    在linux中经常会看到stdin,stdout和stderr,这3个可以称为终端(Terminal)的标准输入(standard input),标准输出( standard out)和标准错误输出( ...

  9. linux 读取终端stdout,【Linux基础】linux下的stdin,stdout和stderr理解

    在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个. 1.三个数据流默认是表现在用户终端上的 执行一个shell命令行时通常会自动打开三个标准文件 ...

最新文章

  1. Java中为什么需要反射?反射要解决什么问题?
  2. 军规13 降低流量和电量消耗
  3. .Net Micro Framework研究—绘图
  4. VTK:非结构化网格之ClipUnstructuredGridWithPlane2
  5. Hybris Commerce Cloud backoffice的一些使用截图 - home工作中心
  6. Invalid bound statement (not found):出现的原因和解决方法
  7. 数据库-windows上安装mysql
  8. 技术大会值得参加吗?
  9. 微信管理工具用什么比较好呀
  10. 通过WIFI,访问一个网站
  11. 第二章 复杂的HTML解析(上)
  12. 【信息安全服务】使用Hashcat工具对shadow文件进行弱口令检查
  13. SpringBoot+JWT+Shiro+MybatisPlus后端脚手架
  14. android 各种服务介绍,Android 网络服务介绍
  15. 个推和极光推送技术介绍
  16. 1. 简介(The caret package )
  17. Hexo+Github: 博客网站搭建完全教程(看这篇就够了)
  18. era翻译_英语单词era是什么意思,英文单词查询era,在线单词era翻译
  19. 数据降维——Isomap
  20. MDict中最好用的英语、汉语词典_我是亲民_新浪博客

热门文章

  1. 静态库和动态库的区别(面试题)
  2. A1、A2、A3、A4的纸尺寸分别是多少?
  3. 华为云计算学习:FusionSphere产品(服务器虚拟化)
  4. Java使用Criteria实现多条件查询
  5. 安卓录屏怎么录?这些方法可以尝试
  6. hadoop命令大全(完整)
  7. JdbcTemplate 无效的列类型 UncategorizedSQLException
  8. mac彻底删除anaconda
  9. linux将文件内容全角转半角,字符串半角全角互转详解
  10. [article]看到一篇文章:找工作?考研?出国?赚钱?未来