Linux编程-回忆录二

====文件IO====
Linux系统IO操作都是使用文件描述符来代表打开的文件,一个非负的的
整数,它被用来指所有类型的打开的文件,包括管道,FIFO,网络套接
字,终端,设备和一般文件。每个进程都有自己的一套文件描述符

经常使用的三个文件描述符是:
标准输入(stdin,  STDIN_FILENO,  0)
标准输出(stdout, STDOUT_FILENO, 1)
标准错误(stderr, STDERR_FILENO, 2)

#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags, ... /* mode_t mode */);
打开一个文件,返回文件描述符,失败返回-1,并设置errno值
pathname表示文件路径, flags表示访问权限, mode表示设置文件的权限

flags的值通常如下所示的组合:
O_RDONLY    只读打开
O_WRONLY    只写打开
O_RDWR      读写打开
...

#include <unistd.h>
ssize_t read(int fd, void *buffer, size_t count);
从文件读取最多count个字节到buffer中,成功返回读取的字节数,0表示文件读到
结尾EOF,-1表示出错了

#include <unistd.h>
ssize_t write(int fd, void *buffer, size_t count);
从buffer中取出count个字节,写入fd对应的文件中,返回实际写入的
字节数,-1表述错误

#include <unistd.h>
int close(int fd);
关闭文件,0成功,-1失败

#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
改变文件的偏移量,offset相对whence的偏移量,成功返回新的偏移量,-1错误
偏移量:表示文件读/写到了哪个位置
whence的值:
    SEEK_SET(文件开头)
    SEEK_CUR(当前偏移)
    SEEK_END(文件结尾)

#include <sys/ioctl.h>
int ioctl(int fd, int request, ... /* argp */);
IO通用操作接口,操作类型繁多,具体可以查阅帮助手册,返回值依赖request,-1错误

#include <fcntl.h>
int fcntl(int fd, int cmd, ...);
操作文件的属性,错误返回-1,可以获取或是设置文件的各种属性

#include <unistd.h>
int dup(int oldfd);
拷贝文件描述符,返回一个没有使用的最小文件描述符,错误返回-1值

#include <unistd.h>
int dup2(int oldfd, int newfd);
拷贝oldfd文件描述符为newfd文件描述符,如果newfd已经被
使用了,首先关闭它

#include <stdlib.h>
int mkstemp(char *template);
使用文件模版路径创建一个临时文件,路径后6个字节必须为XXXXXX,创建
保证原子行,错误返回-1值

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。