品牌网站织梦模板下载,包头索易网站建设,建立门户网站的费用,ps网站如何做烫金的文字open
在linux中的读写文件有对应的命令。在终端中输入man 2 open可以打开open的手册页#xff0c;注意man 2是linux自己的函数的一些手册#xff0c;man 3是C库的手册 打开手册页之后找到open函数的用法如下#xff1a;
#以下是需要的库文件#xff0c;man 2 open打开直接…open
在linux中的读写文件有对应的命令。在终端中输入man 2 open可以打开open的手册页注意man 2是linux自己的函数的一些手册man 3是C库的手册 打开手册页之后找到open函数的用法如下
#以下是需要的库文件man 2 open打开直接复制
#include sys/types.h
#include sys/stat.h
#include fcntl.h#这个是打开文件的用法返回文件描述符所以是int类型
int open(const char *pathname, int flags);参数- pathname 要打开的文件路径- flags 对文件的操作权限和其他的设置-必选项O_RDONLY, O_WRONLY, or O_RDWR-可选项O_CREAT 文件不存在创建新文件 等等等...很多去man 2 open里看。int open(const char *pathname, int flags, mode_t mode);参数- pathname 要打开的文件路径- flags 对文件的操作权限和其他的设置-必选项O_RDONLY, O_WRONLY, or O_RDWR-可选项O_CREAT 文件不存在创建新文件 等等等...很多去man 2 open里看。-mode : 八进制的数表示创建出的新的文件的操作权限最终的权限是mode ~umask (这里是掩码取反 然后和设置的mode按位与)0777 - 111111111 0775 - 111111101-----------------------111111101会少一些权限umask的作用就是抹去某些权限普通用户coder是(0)022mode这里为什么是8进制数 因为在linux中权限要么就是rwx就是读写可执行的权限那么这三个权限如果都有就是111,二进制来说就是7。那么一个文件不仅只在一个地方有权限还有用户对他的权限、其他文件对他的权限等这样的权限使用的地方有三个这样的地方那么如果三个地方全都有权限就是07770代表八进制数777代表都有权限 可以看到gcc编译之后得到的txt文件权限是07755是因为最后是r-x)
read和write
同样man 2 read打开得到read函数的手册
#需要的头文件
#include unistd.hssize_t read(int fd, void *buf, size_t count);参数- fd:文件描述符open得到的通过这个文件描述符操作某个文件- buf:需要读取数据存放的地方数组的地址传出参数- count指定de数组的大小,读多少返回值-成功0:返回实际已经读取的字节数0文件已经读取完了-失败-1并且设置errno ssize_t write(int fd, const void *buf, size_t count);参数-fd:文件描述符open得到的通过这个文件描述符操作某个文件-buf:要往磁盘写入的数据数组-count:要写的数据的实际大小写多少返回值成功实际写入的字节数失败-1并设置errolseek
与C库的fseek是一样的用法。man 2 lseek看命令手册
#include sys/types.h
#include unistd.hoff_t lseek(int fd, off_t offset, int whence);参数-fd:文件描述符-offset: 偏移量 off_t就类似于long型-whenceSEEK_SET:直接指定文件指针到当前设置的offset位置处SEEK_CUR设置偏移量从当前文件指针加上设置的offsetSEEK_END:设置偏移量从当前文件末尾的指针加上设置的offset返回当前指针所在位置也就是当前所在的字节数作用1.移动文件指针到文件头lseek(fd,0,SEEK_SET);2.获取当前文件的指针位置lseek(fd,0,SEEK_CUR); 3.获取文件长度lseek(fd,0,SEEK_END);4.拓展文件长度当前文件10b,拓展到110b 这个功能就是先提前占用磁盘大小例如下载一个软件lseek(fd,100,SEEK_END); //需要写一次数据才管用write(fd, , 1);
stat
#include sys/types.h
#include sys/stat.h
#include unistd.hint stat(const char *pathname, struct stat *statbuf);作用获取一个文件相关的一些信息直接文件的信息参数-pathname:操作文件的路径-statbuf:一个结构体变量传出参数用于保存获取到的文件的信息返回值成功返回0失败返回-1设置errno
int lstat(const char *pathname, struct stat *statbuf);作用获取软链接文件的信息参数-pathname:操作文件的路径-statbuf:一个结构体变量传出参数用于保存获取到的文件的信息返回值成功返回0失败返回-1设置errnostat和lstat的区别就是当有软链接时stat会返回链接的那个的文件的信息而lstat会返回软的那个问价你的信息。 一个文件包含着这么一些信息 那么statbuf这个结构体是这样的变量就是去获取他们的创建的时候就struct stat statbuf stat的获取信息的方式