当前位置:   article > 正文

STDIN_FILENO, stdin区别_stdin函数

stdin函数

本文转自:http://topic.csdn.net/u/20080617/15/84f8146e-f337-489c-b4d1-917b57772979.html(仅供本人学习之用)


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

请问,他们有什么区别吗?
1、 stdin等是FILE *类型,属于标准I/O,在 。

      STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2,属于没有buffer的I/O,直接调用系统调用,在 。

2、 数据类型不一致:
      stdin类型为 FILE*
      STDIN_FILENO类型为 int

     使用stdin的函数主要有:fread、fwrite、fclose等,基本上都以f开头
     使用STDIN_FILENO的函数有:read、write、close等

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就是标准输入设备(一般是键盘)的文件描述符。
     标准C++一级提供的文件操作函数库都是用FILE*来表示文件,stdin就是指向标准输入设备文件的FILE*。

6、 stdin 由标准C库实现, STDIN_FILENO是指0号文件描述符,文件描述符是linux内核(类unix操作系统)专有概念,对文件描述符的操作属于系         统调用,无法在windows或其他系统中找到。在linux下,stdin的实现必然依赖于文件描述符。也就是说这两个东西在不同的层次,一个是用户       层的C库,一个是系统层的系统调用。

7、 可以这样理解stdin结构中包含了STDIN_FILENO文件描述符。文件描述符是最底层的一个类型,可以用来表示系统中的任何设备,FILE *在          文件描述符的基础上封装了一个机构,里面有相应的缓存信息。

8、 记 住类型不同就ok了,一般linux下面大写的都是数字。就跟宏定义差不多。代表文件描述符。 一般read,write什么的都是对数据进行处理            的。但stdin这种的话,一看就是小写的饿,不是数字,是指针。是句柄。如果学过看过windows编程就知道的。它是一个结构。fopen是封装        过的,用stdin。
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(401) | 评论(0) | 转发(0) |
0

上一篇:warning MSB8012 VS2010

下一篇:

给主人留下些什么吧!~~
评论热议
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/462635
推荐阅读
相关标签
  

闽ICP备14008679号