Chinaunix首页 | 论坛 | 博客
  • 博客访问: 398921
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 645
  • 用 户 组: 普通用户
  • 注册时间: 2015-06-03 18:24
文章分类

全部博文(75)

文章存档

2019年(1)

2018年(20)

2017年(14)

2016年(10)

2015年(30)

分类: 嵌入式

2015-11-19 16:04:58

文件描述符:通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件。

 

每运行一个新程序时,所有的shell都会为其打开3个文件描述符。它们分别是

1、STDIN_FILENO    标准输入

2、STDOUT_FILENO  标准输出

3、STDERR_FILENO   标准出错

这三个文件描述符在/usr/include/unistd.h定义



点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <unistd.h>

  3. int main(void)
  4. {
  5.     printf("STDIN_FILENO:%d\n",STDIN_FILENO);
  6.     printf("STDOUT_FILENO:%d\n",STDOUT_FILENO);
  7.     printf("STDERR_FILENO:%d\n",STDERR_FILENO);

  8.     return 0;
  9. }


不带缓冲的I/O

 

函数openreadwriteclose提供了不带缓冲的I/O,这些函数都是使用文件描述符。

 

下面这段代码就是从标准输入中读取内容,然后写到标准输出。


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>

  4. #define BUFFSIZE 1024

  5. int main(void)
  6. {
  7.     int n;
  8.     char buf[BUFFSIZE];

  9.     while((n = read(STDIN_FILENO,buf,BUFFSIZE)) > 0)
  10.     {
  11.         if(write(STDOUT_FILENO,buf,n) != n)
  12.         {
  13.             perror("write");
  14.             exit(1);
  15.         }
  16.     }
  17. }

当我们执行这样一条指令时

 

#./read_write < read_write.c>data

 

这条指令的意思是将 文件read_write.c的内容复制到data




阅读(1150) | 评论(0) | 转发(0) |
0

上一篇:myls的实现

下一篇:linux下的文件类型

给主人留下些什么吧!~~