免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1631 | 回复: 1
打印 上一主题 下一主题

%f 为什么不起作用?(模块编程) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-22 15:15 |只看该作者 |倒序浏览

  1. #ifndef __KERNEL__
  2. #  define __KERNEL__
  3. #endif
  4. #ifndef MODULE
  5. #  define MODULE
  6. #endif

  7. #include <linux/config.h>;
  8. #include <linux/module.h>;

  9. #include <linux/kernel.h>;   /* printk() */
  10. #include <linux/malloc.h>;   /* kmalloc() */
  11. #include <linux/fs.h>;       /* everything... */
  12. #include <linux/errno.h>;    /* error codes */
  13. #include <linux/types.h>;    /* size_t */
  14. #include <linux/proc_fs.h>;

  15. #include <linux/time.h>;
  16. #include <linux/init.h>;

  17. int time_read_proc(char *buf, char **start, off_t offset,
  18.                    int count, int *eof, void *data)
  19. {
  20.         int len=0;
  21.         double timee;
  22.         struct timeval tv;

  23.         do_gettimeofday(&tv);
  24.         timee = (tv.tv_sec * 1000000 + tv.tv_usec) /1000000;
  25.         len = sprintf(buf, "%f\n", timee);
  26. //为什么用 %f 输出结果为 %f 而不能得到值,用 %i 或 %lu 都能得到值
  27. //        len += sprintf(buf+len, "%i\n", len);

  28.         *eof = 1;
  29.         return len;
  30. }

  31. static void scull_create_proc()
  32. {
  33.     create_proc_read_entry("proctime", 0 /* default mode */,
  34.                            NULL /* parent dir */, time_read_proc,
  35.                            NULL /* client data */);
  36. }

  37. static void scull_remove_proc()
  38. {
  39.     /* no problem if it was not registered */
  40.     remove_proc_entry("proctime", NULL /* parent dir */);
  41. }

  42. void scull_cleanup_module(void)
  43. {
  44.         scull_remove_proc();
  45. }

  46. int scull_init_module(void)
  47. {
  48.         scull_create_proc();
  49.         return 0;
  50. }

  51. module_init(scull_init_module);
  52. module_exit(scull_cleanup_module);
复制代码


模块程序如上,然后在shell 下执行:
gcc -Wall -c proctime.c -o ptime.o
insmod ptime.o
cat /proc/proctime

输出为 %f
为什么会这样?

论坛徽章:
0
2 [报告]
发表于 2004-10-15 10:29 |只看该作者

%f 为什么不起作用?(模块编程)

你把timee = (tv.tv_sec * 1000000 + tv.tv_usec) /1000000; 改为timee = (tv.tv_sec * 1000000 + tv.tv_usec) /1000000.0; 试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP