建个电子商务网站多少钱网站建设程序制作
web/
2025/10/6 14:13:08/
文章来源:
建个电子商务网站多少钱,网站建设程序制作,佛山小网站建设,wordpress付费访问页面open函数 要点#xff1a; int open(const char *pathname, int flags); perror函数 close函数 控制台输入#xff1a;
man 2 open2 表示第二章#xff08;Linux系统IO函数位于第二章#xff09;#xff0c;第三章是标准C库的一些函数部分输出#xff1a; 1、open函数返…open函数 要点 int open(const char *pathname, int flags); perror函数 close函数 控制台输入
man 2 open2 表示第二章Linux系统IO函数位于第二章第三章是标准C库的一些函数部分输出 1、open函数返回值是一个 文件描述符。调用 open() 会创建一个新的打开文件描述它是全系统打开文件表中的一个条目。打开文件描述符记录了文件偏移量和文件状态标志见下文。文件描述符是对打开文件描述符的引用。如果路径名随后被删除或修改为指向不同的文件该引用也不会受到影响。 2、flags参数标志必须包括以下访问模式之一 O_RDONLY、O_WRONLY 或 O_RDWR。它们分别要求以只读、只写或读/写方式打开文件。
分析
//三个头文件
#include sys/types.h
#include sys/stat.h
#include fcntl.h// 两个open函数在cpp中是重载但是在c中没有重载的是通过可变参数实现这样的效果// 打开一个已经存在的文件
int open(const char *pathname, int flags);参数- pathname要打开的文件路径- flags对文件的操作权限设置还有其他的设置 类似rwxO_RDONLY, O_WRONLY, O_RDWR 这三个设置是 互斥 的只能选一个返回值返回一个 新的文件描述符如果调用失败返回-1errno属于Linux系统函数库库里面的一个全局变量记录的是最近的错误号。#include stdio.h
void perror(const char *s);作用打印errno对应的错误描述s参数用户描述比如hello最终输出的内容是 hello:xxx(实际的错误描述)// 创建一个新的文件
int open(const char *pathname, int flags, mode_t mode);errno只记录错误的号码因此用perror打印错误的描述。
控制台输入
man 3 perror部分输出 例子
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include stdio.h
#include unistd.hint main() {// 打开一个文件int fd open(a.txt, O_RDONLY);if(fd -1) {perror(open); // open:XXXXX}// 读操作// 关闭close(fd);return 0;
}控制台输入
man 2 close部分输出 close() : close a file descripter, so that it no longer refers to any file and may be reused.
执行一下代码 要点 int open(const char *pathname, int flags, mode_t mode); #include sys/types.h
#include sys/stat.h
#include fcntl.hint open(const char *pathname, int flags, mode_t mode);参数- pathname要创建的文件的路径- flags对文件的操作权限和其他的设置- 必选项O_RDONLY, O_WRONLY, O_RDWR 这三个之间是 互斥 的只能选一个- 可选项O_CREAT 文件不存在创建新文件- mode八进制的数表示创建出的新的文件的操作权限比如0775最终的权限是mode ~umask0777 - 111111111 0775 - 111111101--------------------------------------------------------------------------------------111111101按位与0和任何数都为0umask的作用就是 抹去某些权限。flags参数是一个int类型的数据占4个字节32位。flags 32个位每一位就是一个标志位。1关于 mode 的解释请打开open函数文档 drwxr-x- - - 该权限分为4个部分d、rwx、r-x、- - -。 d:表示文件类型 rwx表示文件所有者的对该文件所拥有的权限 r-x表示文件所属组对该文件所拥有的权限 其中- - -表示其他用户对该文件所拥有的权限。 mode的值是八进制数0777代表rwxrwxrwx
petriXX:~/lesson01/05_io$ umask
0002普通用户0002root用户是0022 ~umask即对umask八进制数取反相当于是用0777去减0002等于0775 mode ~umask111111101 umask的作用就是 抹去某些权限 测试
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include unistd.h
#include stdio.hint main() {// 创建一个新的文件int fd open(create.txt, O_RDWR | O_CREAT, 0777);if(fd -1) {perror(open);}// 关闭close(fd);return 0;
}//此时我在root权限下
petriXX:~/lesson01/05_io$ umask
0022petriXX:~/lesson01/05_io$ ls -l create.txt
-rwxr-xr-x得到create的权限是-rwxr-xr-x原因 umask为0022取反为07550755与0777的二进制取 与运算
111 111 111
111 101 101111 101 101得到111 101 101即-rwxr-xr-x目录所属组和其他用户权限为读4和执行1没有写权限。 总结通过umask可以抹去文件的某些权限。
2关于flags的解释 flags参数是一个int类型的数据占4个字节32位。 flags 32个位每一位就是一个标志位。 比如 1-R 2-W 3-RW 4-CR
int fd open(create.txt, O_RDWR | O_CREAT, 0777);所以这里用 或 | 。通过这种方式给flags参数赋值。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87956.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!