一. open、read、write、lseek、close,都是不带缓存的,头文件 <unistd.h>
二. 注意幻数0、1、2,分别代表标准输入,标准输出,标准错误
例子:从标准输入读入至多MAX_BUFF个字符,输出的标准输出。
/*
Ray. 2012,07,02
NOTE:
1. STDIN_FILENO: 0, standard input
2. STDOUT_FILENO: 1, standard output
3. read & write
*/
#include <stdio.h>
#include <unistd.h> /*read*/
#include <errno.h>
#include <stdlib.h>
#define MAX_BUFF 1024
int main(void)
{
int n;
char buf[MAX_BUFF] = {0};
while((n = read(STDIN_FILENO, buf, MAX_BUFF)) > 0)
if(write(STDOUT_FILENO, buf, n) != n)
perror("write error!\n");
if(n < 0)
perror("read error!\n");
exit(0);
}
运行效果:
ray@ubt t1 $ ./a.out
hello
hello
例子中,并未调用open函数,这三个描述符是默认的。
三. 函数
ssize_t read(int fd, void *buff, size_t nbytes);
ssize_t write(int fd, const void *buff, size_t nbytes);