linux系统io函数

​Linux相关系统io的部分函数

file descriptor (文件描述符,一般简写为 fd)

文件描述符                                                    对应的宏
标准输入文件(和标准输入有关)       0                         STDIN_FILENO
标准输出文件(和标准输出有关)       1                         STDOUT_FILENO
标准出错文件(和标准出错有关)       2                         STDERR_FILENO

errno

errno是系统变量(是系统帮该程序/进程定义的一个全局变量),他是一个整数,不同的值代表不同的系统错误(errno也叫错误码),当系统函数发生
某个错误的时候,就会自动把errno设置为这个错误对应的错误码,并且提供了一个函数用来打印对应的错误信息这个函数是 : perror

open函数

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int open(const char *pathname, int flags);
	flags
			O_RDONLY:只读方式打开文件。
			O_WRONLY:只写方式打开文件。
			O_RDWR:可读可写方式打开文件。
			O_CREAT:如果文件不存在,则创建文件。
			O_EXCL:与O_CREAT一起使用,如果文件存在则返回错误。
			O_TRUNC:打开文件时截断文件,即清空文件内容。
			O_APPEND:如果直接读会在头部,写入文件时才追加到文件末尾。
			O_NONBLOCK:以非阻塞模式打开文件。
			O_SYNC:每次写入文件都将数据同步到底层设备。
			O_NOCTTY:如果路径名称指向终端设备,不将该设备分配作为进程的控制终端。 


int open(const char *pathname, int flags, mode_t mode);
	O_CREAT,只有flags为这个时才用这个函数
	mode_t mode

  	mode: 
            指定创建之后这个文件的属性中的权限(ls -l 显示的那9种权限)
            有两种方式指定,宏或者8进制数字
            具体: 
            S_IRWXU  00700 user (file owner) has read, write, and execute permission
​
            S_IRUSR  00400 user has read permission
​
            S_IWUSR  00200 user has write permission
​
            S_IXUSR  00100 user has execute permission
​
            S_IRWXG  00070 group has read, write, and execute permission
​
            S_IRGRP  00040 group has read permission
​
            S_IWGRP  00020 group has write permission
​
            S_IXGRP  00010 group has execute permission
​
            S_IRWXO  00007 others have read, write, and execute permission
​
            S_IROTH  00004 others have read permission
​
            S_IWOTH  00002 others have write permission
​
            S_IXOTH  00001 others have execute permission

close函数

#include <unistd.h>
int close(int fd);
     fd:要关闭的文件描述符
     返回值:
         成功返回0
         失败返回-1

read函数

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
     fd:文件描述符,对应一个文件,表示从这个文件中读取数据
     buf:首地址,指向的内存用来保存读取到的内容
     为什么是 void*,而不是 char*或者int*呢?
     原因是不确定读取的数据是什么类型,可能是字符串,也可能是Int,也可能是double .....
     count:数量,以字节为单位,表示想要读取 count个字节的数据
     返回值:
        成功返回:大于0,返回实际读取到的数据
                 等于0,已经到文件末尾,没有数据可读
        失败返回: -1 ,读取过程中发生错误

write函数

#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);
    fd :文件描述符,对应一个文件,表示往这个文件中写入数据
    buf:一块内存的首地址,这块内存中保存了将要写入文件的数据
    count: 你想要往文件中写入多少个字节的数据
    返回值:
        失败返回-1,同时errno被设置
        成功返回实际写入的字节数目

​ lseek函数

#include <sys/types.h>
#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);
    fd:文件描述符,对应一个文件,表示定位这个文件的光标
    offset:偏移量,以字节为单位,正数往后,负数往前
    whence:定位方式,有三种情况
        SEEK_SET 以文件开头为基准进行偏移 
        新光标位置=文件开头+offset 
        SEEK_CUR 以当前光标位置为基准进行偏移
        新光标位置=当前光标位置+offset
        SEEK_END 以文件末尾为基准进行偏移
        新光标位置=文件末尾+offset

其他函数

truncate/ftruncate 截短文件
#include <unistd.h>
#include <sys/types.h>int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
    把文件截短变为 length字节(保留前面 length个字节)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值