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

金华企业自助建站系统wordpress代码修改用户权限

金华企业自助建站系统,wordpress代码修改用户权限,浙江建筑培训网,珠宝 东莞网站建设fcntl fcntl.c实现了文件控制系统调用fcntl和两个文件句柄描述符的复制系统调用dup()和dup2()。 dup返回当前值最小的未用句柄#xff0c;dup2返回指定新句柄的数值#xff0c;句柄的复制操作主要用在文件的标准输入、输出重定向和管道方面。 dupfd 复制文件句柄#xff…fcntl fcntl.c实现了文件控制系统调用fcntl和两个文件句柄描述符的复制系统调用dup()和dup2()。 dup返回当前值最小的未用句柄dup2返回指定新句柄的数值句柄的复制操作主要用在文件的标准输入、输出重定向和管道方面。 dupfd 复制文件句柄参数fd是要复制的文件句柄arg是新文件句柄的最小数值返回值是新文件句柄或者错误码 static int dupfd(unsigned int fd, unsigned int arg) {if (fd NR_OPEN || !current-filp[fd])return -EBADF;if (arg NR_OPEN)return -EINVAL;//查找空闲的文件句柄while (arg NR_OPEN)if (current-filp[arg])arg;elsebreak;if (arg NR_OPEN)return -EMFILE; //清除进程的 close_on_exec 位图中的特定位。close_on_exec 是一个位图用于记录在执行 exec 系统调用时是否关闭相应的文件描述符。current-close_on_exec ~(1arg);(current-filp[arg] current-filp[fd])-f_count;return arg; } dup2和dup的实现 int sys_dup2(unsigned int oldfd, unsigned int newfd) {sys_close(newfd);return dupfd(oldfd,newfd); }int sys_dup(unsigned int fildes) {return dupfd(fildes,0); } sys_fcntl 的函数 实现了 fcntl 系统调用的功能。fcntl 系统调用用于对打开文件描述符进行操作和控制通过传递不同的命令cmd来实现不同的操作。 下面是该函数的作用和代码实现的解释 首先它检查给定的文件描述符fd是否有效即必须小于已打开文件描述符的最大数目NR_OPEN并且与当前进程的文件描述符表中的相应条目current-filp[fd]关联。 如果文件描述符无效函数返回错误码 -EBADF-9无效的文件描述符。 根据传递的命令cmd参数执行不同的操作 F_DUPFD如果命令是 F_DUPFD则调用 dupfd 函数来复制给定的文件描述符fd到最小的可用文件描述符号arg。F_GETFD如果命令是 F_GETFD则返回当前进程的 close_on_exec 位图中对应文件描述符的状态即该文件描述符在 exec 执行时是否会被关闭。F_SETFD如果命令是 F_SETFD则根据参数 arg 将当前进程的 close_on_exec 位图中对应文件描述符的状态进行设置即设置或清除该文件描述符在 exec 执行时是否会被关闭的标志位。F_GETFL如果命令是 F_GETFL则返回与给定文件描述符关联的文件状态标志。F_SETFL如果命令是 F_SETFL则根据参数 arg 对给定文件描述符关联的文件状态标志进行设置例如设置或清除非阻塞O_NONBLOCK和追加O_APPEND等标志位。其他命令F_GETLK、F_SETLK、F_SETLKW该函数返回 -1表示不支持给定的命令。 int sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg) { struct file * filp;if (fd NR_OPEN || !(filp current-filp[fd]))return -EBADF;switch (cmd) {case F_DUPFD:return dupfd(fd,arg);case F_GETFD:return (current-close_on_execfd)1;case F_SETFD:if (arg1)current-close_on_exec | (1fd);elsecurrent-close_on_exec ~(1fd);return 0;case F_GETFL:return filp-f_flags;case F_SETFL:filp-f_flags ~(O_APPEND | O_NONBLOCK);filp-f_flags | arg (O_APPEND | O_NONBLOCK);return 0;case F_GETLK: case F_SETLK: case F_SETLKW:return -1;default:return -1;} } ioctl ioctl.c文件实现了输入、输出控制系统调用ioctl主要调用tty_ioctl函数对终端IO进行控制 extern int tty_ioctl(int dev, int cmd, int arg);typedef int (*ioctl_ptr)(int dev,int cmd,int arg);#define NRDEVS ((sizeof (ioctl_table))/(sizeof (ioctl_ptr)))static ioctl_ptr ioctl_table[]{NULL, /* nodev */NULL, /* /dev/mem */NULL, /* /dev/fd */NULL, /* /dev/hd */tty_ioctl, /* /dev/ttyx */tty_ioctl, /* /dev/tty */NULL, /* /dev/lp */NULL}; /* named pipes */int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg) { struct file * filp;int dev,mode;if (fd NR_OPEN || !(filp current-filp[fd]))return -EBADF;//判断文件类型modefilp-f_inode-i_mode;if (!S_ISCHR(mode) !S_ISBLK(mode))return -EINVAL;//获取设备号dev filp-f_inode-i_zone[0];if (MAJOR(dev) NRDEVS)return -ENODEV;if (!ioctl_table[MAJOR(dev)])return -ENOTTY;//对应ioctl_table函数指针表中没有对应函数则返回出错码return ioctl_table[MAJOR(dev)](dev,cmd,arg); }stat 实现了取文件信息状态系统调用stat和fstat并将信息存放用户的文件状态结果缓冲区中 cp_stat复制文件状态信息 static void cp_stat(struct m_inode * inode, struct stat * statbuf) {struct stat tmp;int i;//验证存放数据的内存空间verify_area(statbuf,sizeof (* statbuf));tmp.st_dev inode-i_dev;tmp.st_ino inode-i_num;tmp.st_mode inode-i_mode;tmp.st_nlink inode-i_nlinks;tmp.st_uid inode-i_uid;tmp.st_gid inode-i_gid;tmp.st_rdev inode-i_zone[0];tmp.st_size inode-i_size;tmp.st_atime inode-i_atime;tmp.st_mtime inode-i_mtime;tmp.st_ctime inode-i_ctime;//复制状态信息到用户缓冲区for (i0 ; isizeof (tmp) ; i)put_fs_byte(((char *) tmp)[i],((char *) statbuf)[i]); } sys_stat根据文件名获取文件状态信息 int sys_stat(char * filename, struct stat * statbuf) {struct m_inode * inode;//根据文件名找出对应的i节点if (!(inodenamei(filename)))return -ENOENT;cp_stat(inode,statbuf);iput(inode);return 0; }sys_fstat根据文件描述符获取文件状态信息 int sys_fstat(unsigned int fd, struct stat * statbuf) {struct file * f;struct m_inode * inode;if (fd NR_OPEN || !(fcurrent-filp[fd]) || !(inodef-f_inode))return -EBADF;cp_stat(inode,statbuf);return 0; }
http://www.hkea.cn/news/14332675/

相关文章:

  • 校园网站建设初探做啥网站最挣钱
  • 淮南制作网站山西太原做企业网站建设的公司
  • 河北seo网站设计服务器个人买能干什么
  • 基于wap的企业网站设计与实现肥城网站设计公司
  • 网站设计制作是什么静态网页设计与制作
  • 大连网站开发建站南宁关键词排名公司
  • 做一网站要学些什么软件韩国coupang平台erp
  • 网站媒体给房开做内容推广市场调研公司排名
  • soho怎么做网站学做美食网站
  • 免费建站平台官网简答网站开发流程
  • 官方网站查询叉车证广西建筑工程网
  • 企业网站建设的基本流程自己动手建立网站3
  • 昆明php网站建设精品课程网站建设的背景及意义
  • 国际网站怎么样做石家庄seo结算
  • php mysql网站开发全程实例pdf旅游网站开发的意义
  • 深圳制作网站的公司哪家好玄武区网站建设
  • 西安建设手机网站五金网站模板
  • 合适做服装的国际网站a00000网站建设丽丽
  • 门窗厂家东莞网站建设南京江北新区包括哪些地方
  • 淘宝网站建设方案模板下载服务好的丹阳网站建设
  • 商业网站最佳域名没有做老千的斗牛网站
  • 广州网站推广公司wordpress易语言登录
  • 更换域名对网站的影响北京网站改版有哪些好处
  • 网站运营小结广告设计公司宣传海报
  • 滕州建网站哪家好手机网站怎么解析
  • 预约小程序模板江门排名优化公司
  • 三亚网站定制开发公司php网站后台访问统计分析
  • 59网一起做网站wordpress发布心情
  • 上海网站空间租用一级a做爰片免费网站下载
  • 网站建设是半年的持久战网站建设三网合一指的是什么