系统调用IO接口

open/write/read/lseek/close

int open(const char * pathname,int flags,mode_t mode)
功能:打开文件 
pathname :指定要打开的文件名称
flages:    选项参数  
必选参数:   O_RDONLY (读)  O_WRNOLY   (写) O_RDWR(只能选一)(读写)	
可选参数:  O_CREAT 若文件存在则打开,否则创建新文件
		O_EXCL  与O_CREAT同时使用,若文件存在则报错 ,不存在则创建。
	    O_TRUNC  打开文件的同时截断文件为0长度(清空)
        O_APPEND  写数据的时候总是写到文件末尾。
mode	权限。
返回值:   文件描述符(正整数)    文件的操作句柄,
如果失败返回-1     
ssize_t read(int fd,void* buf,size_t count)
从fd文件中读取count长度的数据,放到buf中
返回值: 返回实际读取的字节数,  失败: -1
读到末尾为0
ssize_t write(int fd,const void * buf,size_t count)
fd:  open打开文件所返回的文件描述符
buf:   要写入的数据
count: 要写入的字节数
返回值: 成功实际写入的字节数。 如果错误返回-1
off_t lseek(int fd,off_t offset,int whence)
跳转fd文件的读写位置到指定处
whence:   SEEK_SET     SEEK_CUR  SEEK_END:
offset    偏移量

**umask(0)**
//有可能创建文件,则一定要指定文件权限.
int close(int fd);
umask(0);  将当前进程的文件创建权限掩码修改为mask
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
#include<string.h>
#include<sys/stat.h>

int main()
{
        umask(0);
        //umask 设置文件的创建权限掩码,决定了文件的默认权限
        //给定权限 & ~掩码
        //又可能新建新文件,则一定要指定文件权限.
        int fd=open("test.txt",O_RDWR|O_CREAT,0777);
        if(fd<0){
                perror("open error");
                return -1;
        }

        char * ptr="天已经黑了~~\n";
        int ret=write(fd,ptr,strlen(ptr));
        if(ret<0){
                perror("write error");
                return -1;
        }
        printf("write len:%d\n",ret);
        char buf[1024]={0};

        if(ret<0){
                perror("write error");
                return -1;
        }
        else if(ret==0)
        {
                printf("at end of  file\n");
                return -1;
        }
        else {
                lseek(fd,0,SEEK_SET);

        ret=read(fd,buf,1023);
                printf("read buf:[%s]-[%d]\n",buf,ret);
        }
        close(fd);
        return 0;

}
                                            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值