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

招聘信息网站开发背景wordpress 自定义选项页面

招聘信息网站开发背景,wordpress 自定义选项页面,动漫设计好找工作吗,网站建设小技巧目录 #x1f345;点击这里查看所有博文 随着自己工作的进行#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了#xff0c;只有经常会用到的东西才有可能真正记…目录 点击这里查看所有博文 随着自己工作的进行接触到的技术栈也越来越多。给我一个很直观的感受就是某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了只有经常会用到的东西才有可能真正记下来。存在很多在特殊情况下有一点用处的技巧用的不多的技巧可能一个星期就忘了。 想了很久想通过一些手段把这些事情记录下来。也尝试过在书上记笔记这也只是一时的书不在手边的时候那些笔记就和没记一样不是很方便。 很多时候我们遇到了问题一般情况下都是选择在搜索引擎检索相关内容这样来的也更快一点除非真的找不到才会去选择翻书。后来就想到了写博客博客作为自己的一个笔记平台倒是挺合适的。随时可以查阅不用随身携带。 同时由于写博客是对外的既然是对外的就不能随便写任何人都可以看到。经验对于我来说那就只是经验而已公布出来说不一定我的一些经验可以帮助到其他的人。遇到和我相同问题时可以少走一些弯路。 既然决定了要写博客那就只能认真去写。不管写的好不好尽力就行。千里之行始于足下一步一个脚印慢慢来 写的多了慢慢也会变好的。权当是记录自己的成长的一个过程等到以后再往回看时就会发现自己以前原来这么菜。 本系列博客所述资料均来自互联网资料并不是本人原创只有博客是自己写的。出于热心本人将自己的所学笔记整理并推出相对应的使用教程方面其他人学习。为国内的物联网事业发展尽自己的一份绵薄之力没有为自己谋取私利的想法。若出现侵权现象请告知本人本人会立即停止更新并删除相应的文章和代码。 前言 在用户态下编程可以通过main来传递命令行参数而编写一个内核模块则可通过module_param来传递命令行参数。 给模块定义外部参数 module_param宏是Linux 2.6内核中新增的该宏被定义在include/linux/moduleparam.h文件中具体定义如下: /*** module_param - typesafe helper for a module/cmdline parameter* value: the variable to alter, and exposed parameter name.* type: the type of the parameter* perm: visibility in sysfs.** value becomes the module parameter, or (prefixed by KBUILD_MODNAME and a* .) the kernel commandline parameter. Note that - is changed to _, so* the user can use foo-bar1 even for variable foo_bar.** perm is 0 if the the variable is not to appear in sysfs, or 0444* for world-readable, 0644 for root-writable, etc. Note that if it* is writable, you may need to use kparam_block_sysfs_write() around* accesses (esp. charp, which can be kfreed when it changes).** The type is simply pasted to refer to a param_ops_##type and a* param_check_##type: for convenience many standard types are provided but* you can create your own by defining those variables.** Standard types are:* byte, short, ushort, int, uint, long, ulong* charp: a character pointer* bool: a bool, values 0/1, y/n, Y/N.* invbool: the above, only sense-reversed (N true).*/ #define module_param(name, type, perm) \module_param_named(name, name, type, perm)module_param使用了3个参数变量名它的类型以及一个权限掩码用来做一个辅助的sysfs入口。这个宏定义应当放在函数之外典型的是出现在源文件的前面。 module_param_named则是另一个变种以示例说明可使得var变量在内核外的变量名称为var_out。在内核外给var_out赋值等同于给模块内var变量赋值。 static char *whom hello \n; static int var 1; module_param(whom,charp,0644); module_param_named(var_out,var,int,0644);示例代码 #include linux/init.h #include linux/module.h MODULE_LICENSE(GPL); MODULE_AUTHOR(PD); static char *whom hello; static int var 1; module_param(whom,charp,0644); module_param_named(var_out,var,int,0644); static int hello_init(void) {printk(hello_init %s \n,whom);printk(hello_init %d\n,var);return 0; } static void hello_exit(void) {printk(hello_exit %s \n,whom);printk(hello_exit %d\n,var);return; } module_init(hello_init); module_exit(hello_exit);参数传入 insmod加载模块时可直接携带对应的参数。当传入不存在的参数时会报错unknown parameter。 rootubuntu:# insmod ./hello.ko var100 var_out200 whomtest rootubuntu:# rmmod ./hello.ko rootubuntu:# dmesg [ 9730.375507] hello: unknown parameter var ignored [ 9730.375536] hello_init test [ 9730.375537] hello_init 200 [ 9733.244654] hello_exit test [ 9733.244655] hello_exit 200如不携带参数则使用模块的默认值。 rootubuntu:# insmod ./hello.ko rootubuntu:# rmmod ./hello.ko rootubuntu:# dmesg [ 9520.771593] hello_init hello [ 9520.771594] hello_init 1 [ 9534.227683] hello_exit hello [ 9534.227684] hello_exit 1参数修改 sysfs: 内核会给一些重要的资源创建专属目录或者文件。每个模块会在/sys/module下创建一个同名的文件夹。 文件夹在加载时被创建卸载后立即被销毁。 rootubuntu:# insmod ./hello.ko var100 var_out200 whomtest rootubuntu:# ls /sys/module/hello coresize holders initsize initstate notes parameters refcnt sections srcversion taint uevent rootubuntu:# rmmod ./hello.ko rootubuntu:# ls /sys/module/hello ls: cannot access /sys/module/hello: No such file or directory在专属目录下的parameters目录中记录了模块参数的外部节点。均是虚拟字符设备可直接通过控制台echo修改cat读取。 rootubuntu:# /sys/module/hello# cat ./parameters/var_out 200 rootubuntu:# /sys/module/hello# cat ./parameters/whom test rootubuntu:# /sys/module/hello# echo 300 ./parameters/var_out rootubuntu:# /sys/module/hello# echo hahahaha ./parameters/whom rootubuntu:# /sys/module/hello# cat ./parameters/var_out 300 rootubuntu:# /sys/module/hello# cat ./parameters/whom hahahaha上述修改立即生效在模块退出时查看日志可知变量值已经被修改。 rootubuntu:# dmesg [10522.899811] hello: unknown parameter var ignored [10522.899837] hello_init test [10522.899838] hello_init 200 [10572.883954] hello_exit hahahaha [10572.883955] hello_exit 300补充说明 模块信息查询(modinfo) 源文件中记录的额外信息都会在编译后被打包到ko文件中以下示例中仅列出一部分。 MODULE_LICENSE(GPL); MODULE_AUTHOR(PD); MODULE_DESCRIPTION(3_param example); MODULE_ALIAS(example3); MODULE_PARM_DESC(var,Boolean to enable debugging (0/1 off/on));在shell中可通过modinfo查询模块的全部信息。 rootubuntu:# modinfo ./hello.ko filename: ./hello.ko alias: example3 description: 3_param example author: PD license: GPL srcversion: 6D5DF27C63EBFF621C183E3 depends: retpoline: Y name: hello vermagic: 4.15.0-142-generic SMP mod_unload parm: whom:charp parm: var_out:int parm: var:Boolean to enable debugging (0/1 off/on)mask权限问题 parameters中的对外参数所持有的权限与代码中module_param注册时填写的权限一致。 module_param(whom,charp,0644); module_param_named(var_out,var,int,0644);rootubuntu:# ll /sys/module/hello/parameters/ total 0 drwxr-xr-x 2 root root 0 Jul 22 03:59 ./ drwxr-xr-x 6 root root 0 Jul 22 03:58 ../ -rw-r--r-- 1 root root 4096 Jul 22 03:59 var_out -rw-r--r-- 1 root root 4096 Jul 22 03:59 whom该权限不能超过module_param_call的mask最大权限若填写的权限比mask大则最终效果是以mask为准。对外的现象就是设置的权限不起作用。 /* This is the fundamental function for registering boot/moduleparameters. */ #define __module_param_call(prefix, name, ops, arg, perm, level) \/* Default value instead of permissions? */ \static int __param_perm_check_##name __attribute__((unused)) \BUILD_BUG_ON_ZERO((perm) 0 || (perm) 0777 || ((perm) 2)) \ BUILD_BUG_ON_ZERO(sizeof(prefix) MAX_PARAM_PREFIX_LEN); \static const char __param_str_##name[] prefix #name; \static struct kernel_param __moduleparam_const __param_##name \__used \__attribute__ ((unused,__section__ (__param),aligned(sizeof(void *)))) \ { __param_str_##name, ops, perm, level, { arg } }本例中参数声明时指定权限为0666结果实际加载后参数文件的权限还是0644。 module_param(whom,charp,0666); module_param_named(var_out,var,int,0666); rootubuntu:# ll /sys/module/hello/parameters/ total 0 drwxr-xr-x 2 root root 0 Jul 22 03:59 ./ drwxr-xr-x 6 root root 0 Jul 22 03:58 ../ -rw-r--r-- 1 root root 4096 Jul 22 03:59 var_out -rw-r--r-- 1 root root 4096 Jul 22 03:59 whom那么本篇博客就到此结束了这里只是记录了一些我个人的学习笔记其中存在大量我自己的理解。文中所述不一定是完全正确的可能有的地方我自己也理解错了。如果有些错的地方欢迎大家批评指正。如有问题直接在对应的博客评论区指出即可不需要私聊我。我们交流的内容留下来也有助于其他人查看说不一定也有其他人遇到了同样的问题呢。
http://www.w-s-a.com/news/125396/

相关文章:

  • 网站做贷款许可证网站改版方案模板
  • 装饰公司怎么做网站嘉兴网站制作推广
  • 深圳兼职做网站涿州网站制作
  • 能找本地人做导游的网站app模板素材下载免费
  • 网站积分的作用网站开发需要看相关书籍
  • 建设银行总行网站alexa排名与什么有关系
  • 阿里云服务器发布网站收款网站怎么建设
  • 开发东莞网站制作公司做网站优化步骤
  • 网站版权信息的正确写法如何制作网络游戏
  • 郑州移动端网站建设如何在网上推广自己的公司
  • 企业建站源码系统破解网站后台
  • 石家庄网站开发报价企业注册资本代表什么
  • 招商平台公司宁波seo教程推广平台
  • 哪些网站可以做房产推广垂直门户网站都有什么
  • 不得不知道的网站金石项目管理软件
  • 怎么恢复网站数据库网站开发作业代做
  • 哪里建设网站最好用中国第五冶金建设公司医院网站
  • 雄安网建 网站建设订餐网站建设
  • 广州视频网站建站公司网站 体系
  • 青浦门户网站网站推广烟台公司电话
  • 湖北荆门建设银行网站wordpress购物模板下载
  • 学ui+wordpress模板北京推广优化
  • 建分类网站得花多少钱深圳设计网站开发
  • 网站集群建设和网站集约化百度商桥怎么绑定网站
  • 青岛模板网站建设价格网络品牌网站建设
  • 网站建设的几大要素网站的做网站的公司
  • 怎么登陆自己的公司网站垂直电商网站建设
  • 温州微网站制作哪里有许昌网站建设哪家最好
  • 中国中小企业网站官网网页制作工具按其制作方式分 可以分为
  • 做资源下载网站违法吗河南企业做网站