%f 为什么不起作用?(模块编程)
- #ifndef __KERNEL__
- # define __KERNEL__
- #endif
- #ifndef MODULE
- # define MODULE
- #endif
- #include <linux/config.h>;
- #include <linux/module.h>;
- #include <linux/kernel.h>; /* printk() */
- #include <linux/malloc.h>; /* kmalloc() */
- #include <linux/fs.h>; /* everything... */
- #include <linux/errno.h>; /* error codes */
- #include <linux/types.h>; /* size_t */
- #include <linux/proc_fs.h>;
- #include <linux/time.h>;
- #include <linux/init.h>;
- int time_read_proc(char *buf, char **start, off_t offset,
- int count, int *eof, void *data)
- {
- int len=0;
- double timee;
- struct timeval tv;
- do_gettimeofday(&tv);
- timee = (tv.tv_sec * 1000000 + tv.tv_usec) /1000000;
- len = sprintf(buf, "%f\n", timee);
- //为什么用 %f 输出结果为 %f 而不能得到值,用 %i 或 %lu 都能得到值
- // len += sprintf(buf+len, "%i\n", len);
- *eof = 1;
- return len;
- }
- static void scull_create_proc()
- {
- create_proc_read_entry("proctime", 0 /* default mode */,
- NULL /* parent dir */, time_read_proc,
- NULL /* client data */);
- }
- static void scull_remove_proc()
- {
- /* no problem if it was not registered */
- remove_proc_entry("proctime", NULL /* parent dir */);
- }
- void scull_cleanup_module(void)
- {
- scull_remove_proc();
- }
- int scull_init_module(void)
- {
- scull_create_proc();
- return 0;
- }
- module_init(scull_init_module);
- module_exit(scull_cleanup_module);
复制代码
模块程序如上,然后在shell 下执行:
gcc -Wall -c proctime.c -o ptime.o
insmod ptime.o
cat /proc/proctime
输出为 %f
为什么会这样?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你把timee = (tv.tv_sec * 1000000 + tv.tv_usec) /1000000; 改为timee = (tv.tv_sec * 1000000 + tv.tv_usec) /1000000.0; 试试。