linux系统调用方式访问文件

系统调用-创建:
一、int creat(const char * filename, mode_t mode)

filename:要创建的文件名(包含路径,缺省为当前路径)
mode:创建模式
    常见创建模式:
    S_IRUSR           可读                   4
    S_IWUSR           可写                   2
    S_IXUSR           可执行                 1
    S_IRWXU           可读、写、执行          7
                      无任何权限             0

创建文件代码:
#include <stdio.h>
#include <stdlib.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

void create_file(char * filename){
        if(creat(filename, 0775) < 0){
                printf("创建文件失败!\n");
                exit(EXIT_FAILURE);
        } else {
                printf("创建文件成功!\n");
        }
}

int main(int argc, char * argv[]){
        int i;
        if(argc < 2){
                perror("你没有输入文件名称!");
                exit(EXIT_FAILURE);
        }
        for(i = 1; i < argc; i++){

                create_file(argv[i]);
        }
        exit(EXIT_SUCCESS);
}




二、系统调用-打开
int open(const char * pathname, int flags)
int open(const char * pathname, int flags, mode_t mode)

pathname:要打开的文件名(包含路径,缺省为当前路径)
flag:打开标志
    常见的打开标志:
    O_RDONLY          只读方式打开
    O_WRONLY          只写方式打开
    O_RDWR            读写方式打开
    O_APPEND          追加方式打开
    O_CREAT           创建一个文件(当打开一个文件时,没有会创建)
    O_NOBLOCK         非阻塞方式打开

如果是用O_CREAT就用三个参数的,其他的用俩两个参数


三、文件的关闭
int close(int fd)

四、系统调用-读
int read(int fd, const void * buf, size_t length)    
    参数:
    fd:所指定的文件中读取
    length:把这么多的字节读到buf所指向的缓冲区
    返回值为实际读取的字节数

五、系统调用-写
int write(int fd, const void * buf, size_t length)
    功能:把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数


六、系统调用-定位
int lseek(int fd, offset_t offset, int whence)
    whence可使用一下值
    SEEK_SET:相对文件开头
    SEEK_CUR:相对文件读写指针的当前位置
    SEEK_END:相对文件末尾

    offset可取负值,表示向前移动
    
    怎么计算文件长度?
    
七、系统调用-访问判断
int access(const char * pathname, int mode)
    pathname:文件名称
    mode:要判断的访问权限
    返回值:当我们测试成功时,函数返回0,否则如果一个条件不符时,返回-1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值