title: STDIN_FILENO和stdin

date: 2019/03/15 22:03:22

toc: true

STDIN_FILENO和stdin

https://blog.csdn.net/yeyuangen/article/details/6781999

引入

今天想写一个程序,使用串口非阻塞,然后使用fread来从标准输入中读取,代码差不多是这样的

int main(int argc, char **argv)
{
char buf_read[100];
int num_read;
setvbuf(STDIN_FILENO, (char*)NULL, _IOFBF, 0);------这里应该是stdin
printf("%s %d\n",__FILE__,__LINE__) ;
fflush ( stdout ) ;
while (1)
{
num_read = fread(buf_read, 1, 1, STDIN_FILENO);------这里应该是stdin
if (num_read)
{
printf("%s %d\n",__FILE__,__LINE__) ;
fflush ( stdout ) ;
}
}
}

但是一直提示段错误,后来经过大神指点发现了应是stdin 而不是STDIN_FILENO,其实网上的代码都是写的stdin,只是自己没注意,觉得两个是一样的,其实仔细一看两个是完全不同结构的

总结

  • stdin类型为 FILE*,fread、fwrite、fclose
  • STDIN_FILENO类型为 int,read、write、close
typedef struct _iobuf
{
char* _ptr;
int _cnt;
char* _base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char* _tmpfname;
} FILE; #define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
  • 输入流被称为 standard input,输出流被称为 ``standard output错误流被称为standard error。这些名词通常简写为符号,用于引用这些文件,它们是stdin, stdout, 和 stderr`.

    这些符号中,每一个都是 stdio(3) 中的一个宏,类型是指向 FILE 的指针,可以用于类似 fprintf(3) 或 fread(3) 等函数中

  • 与流关联的整数形式的文件描述符分别是 0,1 还有 2。预处理器符号

    STDIN_FILENO,STDOUT_FILENO STDERR_FILENO 分别以它们为值.

  • 转换

    fileno(stdin) = STDIN_FILENO = 0
    fileno(stdout) = STDOUT_FILENO = 1
    fileno(stderr) = STDERR_FILENO = 2

最新文章

  1. HTML特殊符号汇总
  2. 每天一个linux命令(35):ln 命令
  3. 【BZOJ1002】【FJOI2007】轮状病毒(生成树计数)
  4. SourceTree - 正在检查源... When cloning a repository, "Checking Source" spins forever
  5. VC6.0读取Excel文件数据
  6. WebRTC的学习(一)
  7. 关于spring-mvc的InitBinder注解的参数
  8. C# winform 弹出输入框
  9. HDU 2008 数字统计
  10. FIR滤波器的实现方法(转)
  11. ABP学习笔记(1)-使用mysql
  12. Nintex Workflow Get Attachment link
  13. easyUI-datagrid带有工具栏和分页器的数据网格
  14. 简述synchronized和java.util.concurrent.locks.Lock的异同?
  15. ABBYY OCR技术教电脑阅读缅甸语(上)
  16. 生日蛋糕 POJ - 1190 搜索 数学
  17. html 之 td valign 和 align
  18. [UE4]用Blenspace混合空间动画代替AimOffset动画偏移
  19. source insight 相对路径新建工程
  20. Android 3.0开始引入fragments(碎片、片段)类

热门文章

  1. EditText搜索关键字,返回结果匹配关键字改变颜色
  2. bootstarp 多图片上传 带进度条
  3. 在chrome 怎么通过ajax请求加载本地文件
  4. ANT与SVN集成
  5. 配置SSH(GNS3)
  6. 去掉所有的html标签,得到HTML标签中的所有内容
  7. [已解决]报错:Required request body is missing
  8. C# 中利用 CRC32 值判断文件是否重复
  9. 使用 JS 输出螺旋矩阵
  10. day06(深浅拷贝,元组,字典,集合)