linux之文件编程(一)

来源:互联网 发布:linux搜狗输入法安装 编辑:程序博客网 时间:2024/05/21 13:21
linux中的文件编程可以分为两种:

        1、linux系统调用。

        2、标准C语言库函数。

        前者依赖于linux操作系统,后者与操作系统是独立的,任何遵循c语言库函数的操作系统都可以调用,例如windows、linux、mac OS等等。采用统一的操作方法,调用方法都一样。首先我们来讲linux系统调用,标准的C语言库函数将在下一讲中展开。

    创建文件:int creat(const char *filename,mode_t mode)            参数1:文件的路径和文件名。缺省状态为当前文件下。例如“/home/test.c”;            参数2:既然创建了文件就应该给相应的文件权限。在linux下文件的创建模式一般常用的有;      S_IRUSR 可读      S_IWUSR 可写      S_IXUSR 可执行      S_IRWXU 可读、写、执行      对于创建模式还可以用数字来表示,在linux中常用的数字,可执行-->1,可写-->2,可读-->4,利用上诉的和来表示,例如6表示2+4带有可读可写,0表示无权限。  

文件描述符:这是一个非常重要的变量,在Linux系统中,所有打开的文件都对应一个文件描述符。文件描述符的本质是一个非负整数。当打开一个文件时,该整数由系统来分配。文件描述符的范围是0 - OPEN_MAX (在当前进程中允许打开文件个数的最大值)。早期的UNIX版本OPEN_MAX =19,即允许每个进程同时打开20个文件,如今很多系统则将其增加至1024。

    打开文件:int open(const char *pathname, int flags)                int open(const char *pathname, int flags,mode_t mode)      参数1:文件的路径和文件名。缺省状态为当前文件下。例如“/home/test.c”;                  参数2:文件打开标志位,常见的打开标志      常见的打开标志:      O_RDONLY 只读方式打开      O_WRONLY 只写方式打开      O_RDWR 读写方式打开      O_APPEND 追加方式打开      O_CREAT 创建一个文件      O_NOBLOCK 非阻塞方式打开      参数3:上面的打开文件有2个函数,其中第2个比较特殊带有打开模式mode,当我们的文件打开标志位是O_CREAT时,必须带有第三个参数也就是上面      创建文件中的mode参数一致是给相应的文件一个权限。            open返回值就是一个文件描述符,该描述符用于以后对文件一系列的read、write、close等操作。  

当我们操作完一个文件之后必须做的一件事情就是关闭文件。

    关闭文件:int close(int fd)      参数fd:为文件描述符来自于文件打开时的返回值。   

读文件:int read(int fd,void *buf, size_t length)   功能:从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。   参数1:文件描述符。   参数2:这个参数是一个指针,是一个值-结果参数,即传递进去的是一个没有任何内容的,经过调用函数,会给里面添加内容。   参数3:表示用户需要读取的长度。   返回值:表示我们实际读取的字节数,这里需要注意的是我们用户请求的数据长度和返回的数据长度不一定是一致的,因此在调用的时候最好进行检测。  

写文件:int write(int fd, void *buf, size_t length)  功能:把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。    参数1:文件描述符。  参数2:要写入数据的指针。  参数3:写入字节数  返回值:表示已经写入到文件的字节数,返回值不一定跟要用户写入的数据是一致的,因此需要进行检测。 

    文件定位:int lseek(int fd, offset_t offset, int whence)      功能:将文件读写指针相对whence移动offset字节。操作成功时,返回文件指针相对于文件头的位置。      参数1:相对于whence偏移量。      参数2:whence可使用下述值:      SEEK_SET:相对文件开头      SEEK_CUR:相对文件读写指针的当前位置      SEEK_END:相对文件末尾      返回值:返回当前位置相对于头的位置。            如果想要知道我们所操作的文件的长度我们只要lseek(fd, 0, SEEK_END),返回值就是整个文件的长度  



原创粉丝点击