我写了一个简单的内核模块,并声明了3个参数:
#include<linux/module.h>
int date = 1, month = 1, year = 2000;
module_param(date, int, 0);
MODULE_PARM_DESC(date, "date of time");
module_param(month, int, 0);
MODULE_PARM_DESC(month, "month of time");
module_param(year, int, 0);
MODULE_PARM_DESC(year, "year of time");
int init_module(void) {
printk(KERN_INFO "Today is %d/%d/%d.\n", year, month, date); // write to dmesg file
return 0;
}
字符串
当我执行此命令时:
sudo insmod hello.ko year=`date +%Y` month=`date +%m` date=`date +%d`
型
终端显示:
insmod: ERROR: could not insert module hello.ko: Invalid parameters
型
所以我检查dmesg日志:
[ 4283.774215] hello: `09' invalid for parameter `date'
型
但当我将命令更改为:
sudo insmod hello.ko year=`date +%Y` month=`date +%m` date=9
型
成功了!
[ 4373.679843] Today is 2023/7/9.
型
为什么date +%d
不能工作,而其他的工作?
1条答案
按热度按时间wa7juj8i1#
你应该这样重写你的命令,以避免
date
命令中的前导零:字符串
(the
-
告诉date
不要添加前导零)