這篇文章主要介紹“l(fā)inux param指的是什么”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“l(fā)inux param指的是什么”文章能幫助大家解決問(wèn)題。
成都創(chuàng)新互聯(lián)公司是專業(yè)的神池網(wǎng)站建設(shè)公司,神池接單;提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行神池網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
linux param指的是“module_param”函數(shù),其作用是傳遞命令行參數(shù);在用戶態(tài)下編程可以通過(guò)“main()”的參數(shù)來(lái)傳遞命令行參數(shù),而編寫一個(gè)內(nèi)核模塊則通過(guò)“module_param()”來(lái)傳遞參數(shù)。
我們?cè)谟脩魬B(tài)寫程序時(shí)都喜歡用main函數(shù)的如果參數(shù)來(lái)向程序內(nèi)傳遞數(shù)據(jù)
#include <stlib.h>
#include <stdio.h>
int main(int argc,char **argv)
{
exit(0);
}
其中argc為傳入程序內(nèi)參數(shù)的個(gè)數(shù),argv為傳入的參數(shù) ,其中的第一個(gè)參數(shù)argv[0]為當(dāng)前文件的含路徑的名字,所以實(shí)際傳入程序內(nèi)的參數(shù)個(gè)數(shù)為argc-1個(gè)。
內(nèi)核模塊中沒有main函數(shù),所以向模塊內(nèi)部傳入?yún)?shù)可以通過(guò)module_param這個(gè)宏定義來(lái)實(shí)現(xiàn):
// 原型
#define module_param(name, type, perm) \
module_param_named(name, name, type, perm)
name:傳入?yún)?shù)名稱
type:傳入?yún)?shù)類型,有byte, short, ushort, int, uint, long, ulong, charp, bool,invbool這幾種類型
perm:這個(gè)為sysfs中資源的訪問(wèn)權(quán)限,下面再細(xì)說(shuō),主要有以下權(quán)限類型在uapi/linux/stat.h中定義
#define S_IRWXU 00700 // 用戶讀寫可執(zhí)行權(quán)限
#define S_IRUSR 00400 // 用戶讀權(quán)限
#define S_IWUSR 00200 // 用戶寫權(quán)限
#define S_IXUSR 00100 // 用戶可執(zhí)行權(quán)限
#define S_IRWXG 00070 // 用戶組讀寫可執(zhí)行權(quán)限
#define S_IRGRP 00040 // 用戶組讀權(quán)限
#define S_IWGRP 00020 // 用戶組寫權(quán)限
#define S_IXGRP 00010 // 用戶組可執(zhí)行權(quán)限
#define S_IRWXO 00007 // 其他人可讀寫執(zhí)行權(quán)限
#define S_IROTH 00004 // 其他人可讀權(quán)限
#define S_IWOTH 00002 // 其他人可寫權(quán)限
#define S_IXOTH 00001 // 其他人可執(zhí)行權(quán)限
模塊 代碼編寫:
#include <linux/module.h>
int num = 100;
module_param(num,int,S_IRUSR);
static int __init param_init(void)
{
printk("[%s] num = %d\r\n",__FUNCTION__,num);
return 0;
}
static void __exit param_exit(void)
{
printk("[%s] num = %d\r\n",__FUNCTION__,num)
}
module_init(param_init);
module_exit(param_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Chen");
Makefile文件:
ifneq ($(KERNELRELEASE),)
obj-m:=param.o
else
KERNEL_DIR:=/lib/modules/$(shell uname -r)/build
CURRENT_DIR:=$(shell pwd)
ccflags-y:=-std=gnu99 -Wno-declaration-after-statement
all:
$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules
clean:
$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) clean
endif
編譯 程序,安裝模塊,然后dmesg
模塊安裝后在/sys/module文件夾下會(huì)生成 對(duì)應(yīng)模塊名字的文件夾,進(jìn)入文件夾內(nèi)
進(jìn)入文件夾,文件夾內(nèi)parameters文件夾內(nèi)會(huì)會(huì)有之前程序中的num
從圖片中可以看出內(nèi)核在文件系統(tǒng)中會(huì)生成對(duì)應(yīng)的文件讓用戶訪問(wèn),并且模塊中module_param宏定義中的perm設(shè)置了用戶只讀權(quán)限,所以num文件權(quán)限與其對(duì)應(yīng)。
當(dāng)然你也可以設(shè)置可寫權(quán)限來(lái)改變輸入?yún)?shù) 的值,改變后內(nèi)核模塊中的 該 參數(shù)會(huì)改變但是不會(huì)有任何信息提示。
關(guān)于“l(fā)inux param指的是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
網(wǎng)站標(biāo)題:linuxparam指的是什么
文章轉(zhuǎn)載:http://sd-ha.com/article2/gcjcic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、做網(wǎng)站、ChatGPT、用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)