FQ:Why Bitwise ORed:
FA:猜想有以下模型:用一串某一位是1其余全是0的字符串表示一个选项, 选项们作 “按位与”就可得到0/1字符串, 表示整个flags的状态, Note: 低三位表示Access Mode
等价于以O_WRONLY |O_TRUNC|O_CREAT的flag调用open()
#include<fcntl.h> int creat(const char *pathname, mode_t mode); dup()、dup2()、dup3() //复制一个文件描述符的指向,新的文件描述符的flags和原来的一样,成功返回new_file_descriptor, 失败返回-1并设errno #include <unistd.h> int dup(int oldfd); //使用未被占用的最小的文件描述符编号作为新的文件描述符 int dup2(int oldfd, int newfd); #include <fcntl.h> #include <unistd.h> int dup3(int oldfd, int newfd, int flags); #include<unistd.h> #include<stdlib.h> int res=dup2(fd,fd2); if(-1==res){ perror("dup2"),exit(-1); read() //从fd对应的文件中读count个byte的数据到以buf开头的缓冲区中,成功返回成功读取到的byte的数目,失败返回-1设errno #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); #include <unistd.h> #include<stdlib.h> int res=read(fd,buf,6); if(-1==fd) perror("read"),exit(-1); write() //从buf指向的缓冲区中读取count个byte的数据写入到fd对应的文件中,成功返回成功写入的byte数目,文件的位置指针会向前移动这个数目,失败返回-1设errno #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count);//不需要对buf操作, 所以有const, VS read()没有const #include <unistd.h> #include<stdlib.h> int res=write(fd,"hello",sizeof("hello")); if(-1==res) perror("write"),exit(-1);Note: 上例中即使只有一个字符’A’,也要写”A”,因为”A”才是地址,’A’只是个int
lseek():