Linux文件操作函数接口
Posted tgww88
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件操作函数接口相关的知识,希望对你有一定的参考价值。
一、系统调用和设备驱动程序
只需用很少的函数就可以对文件和设备进行访问和控制,这些函数称为系统调用,由UNIX和Linux直接提供,它们也是通向操作系统本身的接口。
操作系统的核心部分,即内核,是一组设备驱动程序。它们是一组对系统硬件进行控制的底层接口。
二、系统调用函数接口
1、size_t write(int fildes,const void *buf,size_t nbytes);
函数说明:将缓冲区buf的前nbytes个字节写入与文件描述符fildes关联的文件中。返回实际写入的字节数,如果出错返回-1。
头文件:#include <unistd.h>
2、size_t read(int fildes,void *buf,size_t nbytes);
函数说明:从与文件描述符fildes相关联的文件里读入nbytes个字节的数据,并把他们放到数据区buf中。返回实际读入的字节数,如果出错返回-1。
头文件:#include <unistd.h>
3、int open(const char *path,int oflags);
int open(const char *path,int oflags,mode_t mode);
函数说明:建立了一条到文件或设备的访问路径。返回与文件相关联的文件描述符。
头文件:#include <fcntl.h>
4、int close(int fildes)
函数说明:终止文件描述符fildes与其相对应文件之间的关联。文件描述符被释放并能够被重新使用。调用成功返回0,失败返回-1。
头文件:#include <unistd.h>
5、int ioctl(int fildes,int cmd,....)
函数说明:提供了一个用于控制设备及其描述符行为和配置底层服务的接口。
头文件:#include <unistd.h>
6、off_t lseek(int fildes,off_t offset,int whence)
函数说明:对文件描述符fildes的读写位置进行设置。读写指针既可设置为文件中的某个绝对位置,也可以设置为相对于当前位置或文件尾的某个相对位置。返回从文件头道文件指针位置的字节偏移值,失败时返回-1。
头文件:#include <unistd.h>
#include <sys/types.h>
7、int fstat(int fildes,struct stat *buf)
int stat(const char *path,strcut stat *buf)
int lstat(const char *path,struct stat *buf)
函数说明:返回与文件描述符相关的文件的状态信息,该信息将会写到一个buf结构中。stat和lstat返回相同的结果,但当文件时一个符号链接时,lstat返回的是该符号链接本身的信息,而stat返回的是该链接指向的文件的信息。
头文件:#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
8、int dup(int fildes)
int dup2(int fildes,int fildes2)
函数说明:提供了一种复制文件描述符的方法,使我们能够通过两个或者更多个不同的描述符来访问同一个文件
头文件:#include <unistd.h>
三、标准IO库
1、 FILE *fopen(const char *filename, const char *mode)
函数说明:打开由filename参数指定的文件,并把它与一个文件流关联起来。失败时返回NULL值
头文件:#include <stdio.h>
2、size_t fread(void *ptr,size_t size,size_t nitems,FILE *stream)
函数说明:用于从一个文件流里读取数据。size参数指定每条数据记录的长度,计数器nitems给出要传输的记录个数。它的返回值是成功读到数据缓冲区里的记录个数。
头文件:#include <stdio.h>
3、size_t fwrite(const void *ptr,size_t size,size_t nitems,FILE *stream)
函数说明:从指定的数据缓冲区里取出数据记录,并把它们写到输出流中,返回值是成功写入的记录个数。
头文件:#include <stdio.h>
4、int fclose(FILE *stream)
函数说明:关闭指定的文件流stream,使所有尚未写出的数据都写出(因为stdio库会对数据进行缓冲,所以fclose很重要)。
头文件:#include <stdio.h>
5、int fflush(FILE *stream)
函数说明:把文件流里所有未写出的数据立刻写出。fclose函数隐含执行了一次flush操作。
头文件:#include <stdio.h>
6、int fseek(FILE *stream,long int offset,int whence)
函数说明:fseek函数是与lseek系统调用对应的文件流函数。与lseek不同的是,fseek返回的是一个整数,0代表成功,-1表示失败。
头文件:#include <stdio.h>
7、int fgetc(FILE *stream)
int getc(FILE *stream)
int getchar()
函数说明:从文件流取出下一个字节,并把它作为一个字符返回,当它到达文件尾或出现错误时,它返回EOF。
头文件:#include <stdio.h>
8、int fputc(int c,FILE *stream)
int putc(int c,FILE *stream)
int putchar(int c)
函数说明:把一个字符写到文件流中,返回写入的值,如果失败返回EOF。
头文件:#include <stdio.h>
9、char *fgets(char *s,int n,FILE *stream)
char *gets(char *s)
函数说明:从文件流stream里读取一个字符串 fgets把读到字符写到s指向的字符串里,直到出现下面某种情况:遇到换行符;已经传输了n-1个字符,或者到达文件尾。它会把遇到的换行符也传递到接收字符里,再加上一个表示结尾的空字符。返回值是指向字符串s的指针,如果文件尾已经到达文件尾或者出现读错误,fgets返回一个空指针。
头文件:#include <stdio.h>
10、int printf(const char *format,.....)
int sprintf(char *s,const char *format,......)
int fprintf(FILE *stream,const char *format,......)
头文件:#include <stdio.h>
四、文件流错误
许多stdio库函数会返回一个超出范围的值,错误由外部变量errno指出。
#include <errno.h> extern int errno;
1、int ferror(FILE *stream)
函数说明:测试一个文件流的错误标识,若标识被设置就返回一个非零值,否则返回0
2、int feof(FILE *stream)
函数说明:测试一个文件流的文件尾标识,如标识被设置就返回一个非零值,否则返回0
3、void clearerr(FILE *stream)
函数说明:清除由stream指向的文件流的文件尾标识和错误标识
五、文件和目录的维护
1、int chmod(const char *path,mode_t mode)
头文件:#include <sys/stat.h>
2、int chown(const char *path,uid_t owner,gid_t group)
头文件:#include <sys/types.h>
#include <unistd.h>
3、int unlink(const char *path)
函数说明:删除一个文件的目录项并减少它的链接数。成功返回0,失败返回-1。
头文件:#include <unistd.h>
如果一个文件的链接数减少到零,并且没有进程打开它,这个文件就会被删除。事实上,目录项总是立刻被删除,但是文件锁占用的空间要等到最后一个进程关闭它之后才会被删除。rm程序使用的就是这个调用。文件上其他的链接表示这个文件还有其他名字,这通常是由ln程序创建的。
4、int link(const char *path1,const char *path2)
int symlink(const char *path1,const char *path2)
函数说明:link是指创建一个指向已有文件path1的新硬链接。symlink是指创建一个指向已有文件path2的符号链接。
头文件:#include <unistd.h>
5、int mkdir(const char *path,mode_t mode)
头文件:#include <sys/types.h>
#include <sys/stat.h>
6、int rmdir(const char *path)
头文件:#include <unistd.h>
7、int chdir(const char *path)
char *getcwd(char *buf,size_t size)
头文件:#include <unistd.h>
8、 DIR *opendir(const char *name)
函数说明:打开一个目录,并建立一个目录流,如果成功返回一个指向DIR结构的指针
头文件:#include <sys/types.h>
#include <dirent.h>
9、struct dirent *readdir(DIR *dirp)
函数说明:返回一个指针,该指针指向的结构里保存着目录流dirp中下一个目录项的有关资料。后续的readdir调用将返回后续的目录项。如果发生错误或者到达目录尾,返回NULL。
头文件:#include <sys/types.h>
#include <dirent.h>
六、错误处理
1、char *strerror(int errnum)
函数说明:把错误代码映射为一个字符串,该字符串对发生的错误类型进行说明。
头文件:#include <string.h>
2、void perror(const char *s)
函数说明:把error变量映射到一个字符串,并把它输出到标准错误输出流。该字符串的前面先加上字符串s(如果不为空)中给出的信息,再加上一个冒号和一个空格。
头文件:#include <stdio.h>
以上是关于Linux文件操作函数接口的主要内容,如果未能解决你的问题,请参考以下文章