文件描述符:通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件。
每运行一个新程序时,所有的shell都会为其打开3个文件描述符。它们分别是
1、STDIN_FILENO 标准输入
2、STDOUT_FILENO 标准输出
3、STDERR_FILENO 标准出错
这三个文件描述符在/usr/include/unistd.h定义
-
#include <stdio.h>
-
#include <unistd.h>
-
-
int main(void)
-
{
-
printf("STDIN_FILENO:%d\n",STDIN_FILENO);
-
printf("STDOUT_FILENO:%d\n",STDOUT_FILENO);
-
printf("STDERR_FILENO:%d\n",STDERR_FILENO);
-
-
return 0;
-
}
不带缓冲的I/O:
函数open、read、write、close提供了不带缓冲的I/O,这些函数都是使用文件描述符。
下面这段代码就是从标准输入中读取内容,然后写到标准输出。
-
#include <stdio.h>
-
#include <unistd.h>
-
#include <stdlib.h>
-
-
#define BUFFSIZE 1024
-
-
int main(void)
-
{
-
int n;
-
char buf[BUFFSIZE];
-
-
while((n = read(STDIN_FILENO,buf,BUFFSIZE)) > 0)
-
{
-
if(write(STDOUT_FILENO,buf,n) != n)
-
{
-
perror("write");
-
exit(1);
-
}
-
}
-
}
当我们执行这样一条指令时
#./read_write < read_write.c>data
这条指令的意思是将 文件read_write.c的内容复制到data中
阅读(1227) | 评论(0) | 转发(0) |