Bootstrap

Linux高级编程常用的系统调用函数汇总

1. 文件操作:

库函数访问(缓冲区操作):

1.1:fopen(打开文件):


	原型:
		FILE * fopen(const char * path,const char * mode);
	头文件:
		#include
	参数:
		path:带路径的文件名
		mode打开方式:
			r:  只读      文件必须存在
			r+: 可读可写   不会新建文件,文件必须存在
			w:  只写      如果文件不存在,新建文件
			w+: 可读可写   如果文件不存在,新建文件
			a:  追加    
			a+: 可读可写
	返回值:   文件指针

1.2:fclose(关闭文件):

fclose()函数可以把缓冲区内最后剩余的数据输出到磁盘文件,释放文件指针和有关的缓冲区。
运行程序后输入数据正常关闭会写入到文件,如果程序意外关闭,没有调用fclose,文件数据丢失。

1.3:单个字符的读写:

单个字符读写
	输入输出是相对于内存来说的:
	getchar();
		键盘获取
	putchar();
		输出显示
	fputc();:输出字符
		内存
	fgetc();:获取字符
	feof(fp);
		判断文件指针是否到文件尾部,没有返回0 到达返回1

字符串读写:

1.4:fgets(读取字符串):


	功能:
		从stream 所指的文件内读入字符并存到参数s 所指的内存空间, 直到出现换行字符、读到文件尾或是已读了size-1 个字符为止, 最后会加上NULL 作为字符串结束
	原型:
		char * fgets(char * s, int size, FILE * stream);
	头文件:#include
	参数:
		s保存读取到的字符
		size要读取的字符的个数
		stream为文件流指针
	返回值:
		取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL

1.5:fputs:(可以输出任意文件):

fputs:
	可以输出任何文件
补充学习:
gets   puts

块读写操作:

1.6:fread(块读),fwrite(块写):

函数原型:
		fread:
			size_t  fread(void  *buffer,size_t  size, size_t  count,FILE   *fp)
		fwrite:
			size_t  fwrite(void  *buffer,size_t  size, size_t  count,FILE   *fp)
	返回值
		成功,返回读/写的块数;出错或文件尾,返回0
	说明
		typedef   unsigned   size_t;
	参数
		buffer:  指向要输入/输出数据块的首地址的指针
		size:    每个要读/写的数据块的大小(字节数)
		count:   要读/写的数据块的个数
		fp:      要读/写的文件指针

1.7:格式化读写: fscanf,fprintf:

格式化读写
	fscanf:
		fscanf可以扫描任何文件,不仅仅是键盘,scanf是fscanf
	fprintf:
		可以输出到任何文件

1.8:文件指针定位函数:rewind,fseek,ftell:


	rewind:  将读写指针定位到文件开始位置,无返回值
  
	fseek:   将读写指针定位到指定位置
		fp:要操作的文件
		offset:偏移量(可正可负)
		whence:参考位置
			SEEK_SET  //文件开始
			SEEK_CUR //文件当前位置
			SEEK_END //文件尾
      
	ftell
		返回当前文件读写指针的位置,常用来求文件的大小

1.9: 输出程序错误 perror :

 输出程序错误:
	perror("xxx");

系统调用(非缓冲区操作):

1.1:open(打开或创建一个文件):

	函数功能:
		打开或创建一个文件
	函数原型:
		int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
		int creat(const char *pathname, mode_t mode);
	所属头文件:
		 
      
     
	函数参数:
		pathname:文件路径
		flag:(动作标志)
			O_RDONLY  读        有且只能有一个
			O_WRONLY  写        有且只能有一个
			O_RDWR    读写      有且只能有一个
			O_CREAT   没有就创建 有就访问
			O_EXCL    和O_CREAT连用,如果有 返回错误
			O_TRUNC   将文件截取为0
			O_APPEND  追加
		mode(权限):
			当第二个参数有O_CREAT,表示创建文件的时候给定文件的权限
	返回值:
		成功返回文件表示符fd,失败返回-1

1.2:close(关闭文件):

	函数功能:
		关闭文件
	函数原型:
		  int close(int fd);
	所属头文件:
		
	函数参数:
		文件描述符fd
	返回值
		成功返回0,失败返回-1

读写函数:

1.3:write(向打开的文件写数据):

	功能:
		向打开文件写数据
	原型:
		ssize_t write(int fd, const void *buf, size_t count);
	所属头文件:
		
	参数:
		fd:打开成功的文件描述符
		buf:要写入的数据存放位置
		count:写入的数量
	返回值:
		成功返回写入字节数,失败返回-1

1.4:read(从打开的文件中读取数据):

	功能:
		从打开的文件中读取数据
	原型:
		ssize_t read(int fd, void *buf, size_t count);
	所属头文件:
		 
	参数:
		fd:文件描述符
		buf:存放数据的缓冲区的首地址
		count:读多少字节
	返回值:
		成功返回读到的字节数,失败返回-1

1.5:lseek(指针定位):

	功能:
		重新定位文件的读写位置
	原型:
		off_t lseek(int fildes, off_t offset, int whence);
	所属头文件:
		
    
	参数:
		fildes:文件指针fd
		offset:偏移量  负数向左移动  正数向右移动
		whence:相对位置
			SEEK_CUR  //当前位置
			SEEK_SET  //开始位置
			SEEK_END  //末尾位置
	返回值:
		成功:返回移动之后的文件指针距离文件头的位置  失败:-1