当前位置: 首页 > news >正文

汕尾旅游攻略app跳转网站正规跨境电商平台有哪些

汕尾旅游攻略app跳转网站,正规跨境电商平台有哪些,网站服务器可以自己做吗,上海互联网企业100强5. 文件属性和目录 1. Linux 系统的文件类型1.1 普通文件1.2 目录文件1.3 字符设备文件和块设备文件1.4 符号链接文件1.5 管道文件1.6 套接字文件 2. stat 系统调用2.1 struct stat 结构体2.2 st_mode 变量2.3 struct timespec 结构体 3. fstat 和 lstat 函数3.1 fstat 函数3.2… 5. 文件属性和目录 1. Linux 系统的文件类型1.1 普通文件1.2 目录文件1.3 字符设备文件和块设备文件1.4 符号链接文件1.5 管道文件1.6 套接字文件 2. stat 系统调用2.1 struct stat 结构体2.2 st_mode 变量2.3 struct timespec 结构体 3. fstat 和 lstat 函数3.1 fstat 函数3.2 lstat 函数 4. 文件属主4.1 有效用户ID和有效组ID4.2 chown 函数 5. 文件访问权限5.1 普通权限和特殊权限5.2 目录权限5.3 检查文件权限 access5.4 修改文件权限5.5 umask 函数 6. 文件的时间属性6.1 utime()、utimes() 修改时间属性6.1.1 utime()6.1.2 utimes() 6.2 futimens()、utimensat() 修改时间属性6.2.1 futimens()6.2.1 utimensat() 7. 符号链接(软链接)与硬链接7.1 创建链接文件7.1.1 创建硬链接7.1.2 创建软链接 7.2 读取软链接文件 8. 目录8.1 目录存储形式8.2 创建和删除目录8.3 打开、读取以及关闭目录8.4 进程的当前工作目录 9. 删除文件10. 文件重命名 1. Linux 系统的文件类型 Linux 系统不以后缀区分文件类型但是建议自己命名时遵循 window 系统命名规则。Linux 系统下一共分为 7 种文件类型 1.1 普通文件 普通文件中的数据存在系统磁盘中可以访问文件中的内容文件中的内容以字节为单位进行访问。普通文件可分为文本文件和二进制文件 文本文件: 文件中的内容都是由文本构成的所谓文本指的是 ASCII 码字符。文件中的内容其本质上都是数字因为计算机本身只有 0 和 1这些数字被理解为字符 二进制文件: 这些数字都是真正的数字 在 Linux 系统中可以通过stat命令或者ls命令查看文件类型。通过ls查看时是通过字符显示的。 1.2 目录文件 目录文件就是文件夹 1.3 字符设备文件和块设备文件 设备文件对应的是硬件设备应用程序通过对设备文件的读写来操控硬件设备。设备文件不存在于磁盘中而是由文件系统虚拟出来的一般是由内存来维护的当系统关机时设备文件都会消失。 设备文件一般存放在 Linux 系统 /dev/ 目录下所以 /dev 也称为虚拟文件系统 devfs。 1.4 符号链接文件 类似于 window 中的快捷方式文件它的内容指向的是另一个文件路径当对符号链接文件进行操作时会转移到它指向的文件上去而不是对它本身进行操作。 1.5 管道文件 管道文件主要用于进程间通信后续再讲解 1.6 套接字文件 套接字文件也是一种进程间通信的方式与管道文件不同的是它们可以在不同主机上的进程间通信也就是网络通信后续做详细讲解 2. stat 系统调用 可以通过这个命令查看文件的属性 #include sys/type.h #include sys/stat.h #include unistd.h int stat(const char *pathname, struct stat *buf); // buf指针指向的是一个stat结构体变量获取到的文件属性信息就记录在该结构体中 // 成功返回0失败返回-1并设置error2.1 struct stat 结构体 struct stat {dev_t st_dev; /* 文件所在设备的 ID */ino_t st_ino; /* 文件对应 inode 节点编号 */mode_t st_mode; /* 文件对应的模式 */nlink_t st_nlink; /* 文件的链接数 */uid_t st_uid; /* 文件所有者的用户 ID */gid_t st_gid; /* 文件所有者的组 ID */dev_t st_rdev; /* 设备号指针对设备文件 */off_t st_size; /* 文件大小以字节为单位 */blksize_t st_blksize; /* 文件内容存储的块大小 */blkcnt_t st_blocks; /* 文件内容所占块数 */struct timespec st_atim; /* 文件最后被访问的时间 */struct timespec st_mtim; /* 文件内容最后被修改的时间 */struct timespec st_ctim; /* 文件状态最后被改变的时间 */ };2.2 st_mode 变量 是一个 32 位无符号整形数据记录了文件类型和权限 和 open 函数的 mode 参数区别的地方就是 st_mode 可以设置文件类型 判断文件类型方式 // 使用 S_IFMT 文件类型字段位掩码 if((st.st_mode S_IFMT) S_IFREG) // 判断是不是普通文件 {}// 使用 Linux 封装好的宏来判断 if(S_ISREG(st.st_mode)){} // 判断是不是普通文件是返回true不是返回false if(S_ISDIR(st.st_mode)){} // 判断是不是目录文件是返回true不是返回false if(S_ISCHR(st.st_mode)){} // 判断是不是字符设备文件是返回true不是返回false if(S_ISBLK(st.st_mode)){} // 判断是不是块设备文件是返回true不是返回false if(S_ISFIFO(st.st_mode)){} // 判断是不是管道文件是返回true不是返回false if(S_ISLNK(st.st_mode)){} // 判断是不是链接文件是返回true不是返回false if(S_ISSOCK(st.st_mode)){} // 判断是不是套接字文件是返回true不是返回false2.3 struct timespec 结构体 该结构体是系统中时间相关的结构体 struct timespec {time_t tv_sec; // 秒syscall_slong_t tv_nsec; // 纳秒 };在 Linux 系统中time_t 指的是一个时间段从某一个时间点到某一个时间点所经过的秒数。 3. fstat 和 lstat 函数 这两个函数也是用来获取文件属性信息的但是参数有些不同 3.1 fstat 函数 是通过文件描述符获取文件 #include sys/types.h #include sys/stat.h #include unistd.h int fstat(int fd, struct stat *buf);3.2 lstat 函数 对于符号链接文件stat、fstat 查阅的是符号链接文件所指向的文件对应的属性信息而 lstat 函数查阅的是符号链接文件本身的属性 #include sys/types.h #include sys/stat.h #include unistd.h int lstat(const char *pathname, struct stat *buf);4. 文件属主 Linux 系统中存在多个不同的用户而系统中每一个文件都是有一个与之相关的用户和用户组。登录的是谁的账号所有者就是谁通过 ID 识别不同的用户和用户组将用户名或用户组名与之对应的 ID 关联起来。用户 ID 是 UID组 ID 是 GID。而与一个进程相关的 ID 有 5 个 4.1 有效用户ID和有效组ID 有效用户ID和有效组ID 是站在操作系统的角度用于给操作系统判断当前执行该进程的用户在当前环境下对某个文件是否有相应的权限。当进程在进行权限检查的时候并不是通过进程的实际用户和实际组来判断的而是通过有效用户和有效组。 通常进程的有效用户等于实际用户有效组等于实际组 4.2 chown 函数 改变文件的所有者和所属组。 #include unistd.h int chown(const char *pathname, uid_t owner, gid_t group); // 后两个参数都是需要修改为谁的只有超级用户进程才能更改文件的用户ID和组ID普通用户可以将文件的组ID修改为其所从属的任意附属组ID前提是该进程的有效用户ID 等于文件的用户ID。 5. 文件访问权限 所有文件类型都有访问权限并不是仅仅指普通文件 5.1 普通权限和特殊权限 普通权限是文件所有者、所属组和其他用户对文件的读写以及执行权限。特殊权限则是S字段的权限由高到低依次是 set-user-ID 位权限、set-group-ID 位权限以及 sticky 位权限分别使用 S_ISUID(04000)、S_ISGID(02000) 和 S_ISVTX(01000) 表示。 当进程对文件进行操作的时候将进行权限检查如果 set-user-ID 位权限被设置内核会将进程的有效 ID 设置为该文件的所有者 ID意味着该进程直接获取了文件所有者权限。如果 set-group-ID 位权限被设置就会将用户组 ID 设置为所属组 ID获取了所属组权限。 5.2 目录权限 目录的读权限可以使用ls等命令列出目录下的内容目录的写权限可以在目录下创建、删除文件目录的执行权限可访问目录下的文件对目录下的文件进行读写或执行 5.3 检查文件权限 access 程序当中对文件进行相关操作之前需要先检查权限 #include unistd.h int access(const char *pathname, int mode); /* mode:* F_OK: 检查文件是否存在* R_OK: 检查是否有读权限* W_OK: 检查是否有写权限* X_OK: 检查是否有执行权限* 不仅可以单独使用还可以使用 | 连接* / // 通过返回0没有某权限就返回-1如果有多个检查只要有一个不符合就不会通过5.4 修改文件权限 #include sys/stat.h int chmod(const char *pathname, mode_t mode); // 若pathname指向软链接文件则实际修改的是链接文件指向的文件 // mode就是权限int fchmod(int fd, mode_t mode); // 使用fd访问文件5.5 umask 函数 Linux 中有一个 umask 命令可以查看/设置权限掩码权限掩码主要用于对新建文件的权限进行屏蔽。权限掩码的表示方式和文件权限的表示方式相同**但是要去除特殊权限位umask 不能对特殊权限位进行屏蔽。**当新建文件时实际权限不等于设置的权限应该是mode ~umask。umask 是进程自身的一种属性也就是两个不相关进程之间的umask没有关闭除非是父子进程这种子进程继承父进程的 umask #include sys/types.h #include sys/stat.h mode_t umask(mode_t mask); // 返回旧的 umask6. 文件的时间属性 文件有 3 个时间属性分别是文件最后被访问的时间、文件内容最后被修改的时间以及文件状态最后被改变的时间分别记录在 struct stat 结构体的 st_atim、st_mtim 和 st_ctim 变量中。 文件最后被访问时间指的是最后一次读取文件内容的时间比如使用 read 函数文件内容最后被修改的时间就是内容发生了改变比如使用 write 函数文件状态最后被改变的时间是指文件的 inode 节点最后一次最修改的时间譬如更改文件的访问权限、更改文件用户 ID、更改链接数等。 6.1 utime()、utimes() 修改时间属性 注意: 只能显示修改文件访问时间和修改时间不能显示修改状态改变时间。 只有三种情况可以修改时间属性超级用户进程、有效用户与文件所有者相匹配的进程以及参数times为空时对文件有写权限的进程。 6.1.1 utime() #include sys/types.h #include utime.h int utime(const char *filename, const struct utimbuf *times); // times:如果设置为NULL则表示修改为系统当前时间 // 成功返回0失败返回-1struct utimbuf 结构体 struct utimbuf{time_t actime; // 访问时间其实就是 long int 类型time_t modtime; // 内容修改时间都是以秒为单位 }6.1.2 utimes() #include sys/time.h int utimes(const char *filename, const struct timeval times[2]); // times:数组第一个元素用于指定访问时间第二个用于指定内容修改时间struct timeval{ long tv_sec; // 秒 long tv_usec; // 微秒 } 6.2 futimens()、utimensat() 修改时间属性 用于显示修改时间戳但是这两个函数的优点是 可以按纳秒级精度设置时间可单独设置某一时间戳而如果使用前两个函数就需要先使用 stat 获取当前时间戳可独立将任一时间设置为当前时间而前两个函数将 times 设置为 NULL 就会将所有时间戳修改 6.2.1 futimens() #include fcntl.h #include sys/stat.h int futimens(int fd, const struct timespec times[2]); /* times:* 如果是 NULL就表示将访问时间和修改时间都设置为当前时间* 如果任一数组元素的 tv_nsec 设置为 UTIME_NOW就表示相应的时间戳设为当前时间会自动忽略tv_sec* 如果任一数组元素的 tv_nsec 设置为 UTIME_OMIT表示相应的时间戳不变忽略tv_sec* 如果都不是就设置为指定的值* /6.2.1 utimensat() #include fcntl.h #include sys/stat.h int utimensat(int dirfd, const char *pathname, const struct timespec times[2], int flags); /* dirfd:可以是一个目录的文件描述符也可以是特殊值 AT_FDCWD; 如果 pathname 指定的是绝对路径此参数会被忽略* pathname:如果是一个相对路径并且dirfd不为AT_FDCWD, 则对dirfd指向的目录进行解析如果是相对路径并且dirfd为AT_FDCWD则对相对于当前进程的当前目录进行操作* flags:可以为0也可以设置为 AT_SYMLINK_NOFOLLOW当为特殊值时当pathname指定的文件时符号链接则修改的是该符号链接的时间戳* / // 成功返回0失败返回-17. 符号链接(软链接)与硬链接 使用ln指令可以设置链接文件 硬链接ln 源文件名 链接文件名软链接ln -s 源文件名 链接文件名 硬链接文件与源文件具有相同的 inode也就指向的是物理磁盘的同一块只是文件名不同。inode 会记录文件的链接数就是指硬链接数包括源文件本身当链接数减为0的时候也就意味着文件被删除了。ls -li可以查看链接数。 软链接的数据块中存储的是源文件的路径名当源文件被删除之后软链接依旧存在但是指向的是一个无效的文件路径被称为悬空链接而且软链接不计入链接数中。 但是对于硬链接有一些限制情况 不能对目录创建硬链接只有超级用户才能但是必须在底层文件系统支持的情况下硬链接通常要求链接文件和源文件位于同一文件系统中 软链接的优点可以对目录创建软链接可以跨越不同文件系统可以对不存在的文件创建软链接 7.1 创建链接文件 7.1.1 创建硬链接 #include unistd.h int link(const char *oldpath, const char *newpath); /* oldpath:需要创建硬链接的文件路径避免指向软链接文件因为对软链接文件创建硬链接没意义虽然不报错* newpath:硬链接文件路径如果已存在就会报错* / // 成功返回0失败返回-17.1.2 创建软链接 #include unistd.h int symlink(const char *target, const char *linkpath); /* target:源文件路径可以是一个软链接文件如果指定文件不存在就是悬空链接* linkpath:指定软链接文件路径如果存在就报错* / // 成功返回0失败返回-17.2 读取软链接文件 #include unistd.h ssize_t readlink(const char *pathname, char *buf, size_t bufsiz); /* pathname:需要读取的软链接文件地址只能是软链接文件不能为其他文件否则报错* buf:用于存放路径信息的缓冲区* bufsiz:读取大小一般需要大于链接文件数据块中存储的文件路径信息大小* / // 成功返回读取到的字节数失败返回-18. 目录 目录文件是一种特殊文件不适合使用前面介绍的文件 IO 操作Linux 中有专门的对目录文件操作的函数 8.1 目录存储形式 常规文件包括了 inode 节点以及文件内容数据存储块但是对于目录文件其存储形式是由 inode 节点和目录块构成目录块中记录了哪些文件组织在这个目录下记录它们的文件名以及对应的 inode 编号 8.2 创建和删除目录 #include sys/stat.h #include sys/types.h int mkdir(const char *pathtime, mode_t mode); // 如果路径名已存在就报错成功返回0失败返回-1#include unistd.h int rmdir(const char *pathname); // 需要删除的目录必须是一个空目录也就是只能有 .. 和 . 这两个文件并且不能是软链接文件 // 成功返回0失败返回-18.3 打开、读取以及关闭目录 #include sys/types.h #include dirent.h DIR *opendir(const char *name); // 返回一个结构体指针如果失败返回NULL#include dirent.h struct dirent *readdir(DIR *dirp); // 返回值表示dirp指向的目录流中下一个目录条目在到达目录流的末尾或发生错误时返回NULL struct dirent{ino_t d_ino; /* inode 编号 */off_t d_off; /* not an offset; see NOTES */unsigned short d_reclen; /* length of this record */unsigned char d_type; /* type of file; not supported by all filesystem types */char d_name[256]; /* 文件名 */ }; // 每调用一次该函数返回值都会被覆盖因为该结构体指针式静态分配的#include sys/types.h #include dirent.h void rewinddir(DIR *dirp); // 该函数可以重置为目录流起点以便下一个从第一个文件开始读取#include sys/types.h #include dirent.h int closedir(DIR *dirp);8.4 进程的当前工作目录 #include unistd.h char *getcwd(char *buf, size_t size); // buf:存放get到的地址size必须足够大 // 如果buf为空且size为0就会按需分配一个缓冲区但是调用者使用完后必须free这一块空间int chdir(const char *path); int fchdir(int fd); // 这两个函数是用来改变当前工作目录9. 删除文件 这里的删除文件是指删除普通文件 #include unistd.h int unlink(const char *pathname); // 如果指定文件不存在就调用失败该函数用于删除一个硬链接如果硬链接数不为0那么其他硬链接可以访问该文件的数据只有当为0的时候才会删除数据内容 #include stdio.h int remove(const char *pathname); // 如果是一个非目录文件路径就会自动调用unlink如果是目录文件就会调用rmdir // 该函数不对软链接进行解引用操作而是会删除链接文件本身不是所指向的源文件10. 文件重命名 #include stdio.h int rename(const char *oldpath,const char *newpath);调用 rename()会将现有的一个路径名 oldpath 重命名为 newpath 参数所指定的路径名。 rename()调用仅操作目录条目而不移动文件数据不改变文件 inode 编号、不移动文件数据块中存储的内容重命名既不影响指向该文件的其它硬链接也不影响已经打开该文件的进程譬如在重命名之前该文件已被其它进程打开了而且还未被关闭。根据 oldpath、newpath 的不同有以下不同的情况需要进行说明 若 newpath 参数指定的文件或目录已经存在则将其覆盖若 newpath 和 oldpath 指向同一个文件则不发生变化且调用成功。rename()系统调用对其两个参数中的软链接均不进行解引用。如果 oldpath 是一个软链接那么将重命名该软链接如果 newpath 是一个软链接则会将其移除、被覆盖。如果 oldpath 指代文件而非目录那么就不能将 newpath 指定为一个目录的路径名。要想重命名一个文件到某一个目录下newpath 必须包含新的文件名。如果 oldpath 指代为一个目录在这种情况下newpath 要么不存在要么必须指定为一个空目录。oldpath 和 newpath 所指代的文件必须位于同一文件系统。由前面的介绍可以得出此结论不能对.当前目录和…上一级目录进行重命名
http://www.pierceye.com/news/43244/

相关文章:

  • 南海网站建设多少钱8u免费空间
  • 如何建立自己个人网站网站策划工资一般多少
  • 网站建设运转wordpress ajax分页
  • 企业网站建设 全包武安企业做网站推广
  • 成都网站建设公司官网大学网站html模板
  • 宜宾长宁网站建设精准营销的特征
  • 教育类企业网站网站内容图片怎么做
  • 网站内容的特点免费开发网站大全
  • 公司网站制作怎么弄怎么自己做网站服务器
  • 怎么做自己的网站免费有口碑的江苏网站建设
  • 医院网站建设预算备案价格网站
  • 劳务公司网站建设方案网站建设和优化的步骤
  • 移动互联网时代的到来为很多企业提供了新的商业机会企业网站如何优化
  • 网站建设 ipc备案做网站学h5还是php
  • 临沂建设质量监督站网站深圳营销建网站公司
  • 做检索网站搜狗推广登录app
  • 网上外贸网站怎么做网站播放mp3代码
  • 电子商务网站总体规划的内容wordpress ip 域名
  • 本地常州网站建设pc网站建设是什么意思
  • 住房与建设部网站 2018 128号网站原型图怎么做
  • 如何做网络营销网站连云港建设工程安全网站
  • 校园网站模板下载工程机械网站设计
  • 中通建设工程管理公司网站网推公司招聘
  • asp网站建设项目实训1688一件代发跨境电商
  • 网站内页可以做关键词优化吗山东省建设工程质量监督网站
  • 南开网站建设山东省农村电影监控平台下载
  • 做的网站图片不显示360建筑网官网怎么登录
  • 公司网站的重要性中国免费图片素材网站
  • wordpress注册邮箱设置包头网站建设优化
  • 门户网站英文网站规划设计方案