第三章:文件I/O

UNIX系统中的大多数文件I/O只需用到5个函数:open,read,write,lseek,close。本文描述的函数经常被称为不带缓冲的I/O(unbuffered I/O),与后面的标准I/O相对照。

1, 文件描述符(File Descriptor)

文件描述符是一个非负整数,当open或者create一个文件时,内核向进程返回一个文件描述符。当读写一个文件时,使用open或create返回的文件描述符标识该文件,将其作为参数传递给read或者write。

典型的文件描述符:

0 :STDIN_FILENO(标准输入)

1 :STDOUT_FILENO(标准输出)

2 STDERR_FILENO(标准错误)


2, 典型例子:从制定路径读取一个文件,然后打印到标准输出

#include "apue.h"
#include 
#define BUFFSIZE 1024

/*
 * read a specified file , and print to stdout
 *
 */
int main(int argc, char *arg[])
{
	char buf[BUFFSIZE];
	int n;
	//int fd = open("test.txt",O_RDWR,FILE_MODE);
	int fd = open(arg[1],O_RDWR,FILE_MODE);
	if(fd<0)
		err_sys("open filed error!");

	while((n=read(fd,buf,BUFFSIZE))>0)
	{
		if(write(STDOUT_FILENO,buf,n)!=n)
			err_sys("write error");
	}
	if(n<0)
		err_sys("read error");
	close(fd);
	exit(0);
}


你可能感兴趣的:(Linux)