当前位置:  技术问答>linux和unix

在用户态程序当中,如何使用/proc虚拟文件系统当中一个文件存放的参数??

    来源: 互联网  发布时间:2016-11-08

    本文导语:  现在有个/proc文件系统,里面的一个文件记录了一个变化着的系统参数,用cat打开,就可以看到这个数字当前值,比如100,如何让一个用户态的程序可以使用到这个数值呢?有什么比较efficient的方法??多谢大家指教...

现在有个/proc文件系统,里面的一个文件记录了一个变化着的系统参数,用cat打开,就可以看到这个数字当前值,比如100,如何让一个用户态的程序可以使用到这个数值呢?有什么比较efficient的方法??多谢大家指教。

|
lz说的proc_file_read一般是内核中实现read /proc下相应文件的方法,因为/proc下的文件其实是虚拟的,即并没有存在磁盘上,断电后就没了,反应的是一些内核提供给用户程序的信息,当用户程序使用read来读取/proc下的文件时,到内核中其实是调用proc_file_read,所以你若是在应用程序来读取/proc下的文件就直接read就好了,不用管proc_file_read这个东东

|
linux下有不少很给力的工具,要学会使用它们,strace就可以帮助开发人员观察程序运行时的系统调用轨迹:

[sunxq@sunxq-fc10 ~]$ cat /proc/cmdline
ro root=UUID=1c80070c-0f6f-4ded-9ce4-35db4de610b3 rhgb quiet
[sunxq@sunxq-fc10 ~]$ 
[sunxq@sunxq-fc10 ~]$ strace cat /proc/cmdline
execve("/bin/cat", ["cat", "/proc/cmdline"], [/* 26 vars */]) = 0
brk(0)                                  = 0x80ec000
......
open("/proc/cmdline", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "ro root=UUID=1c80070c-0f6f-4ded-9"..., 1024) = 61
write(1, "ro root=UUID=1c80070c-0f6f-4ded-9"..., 61ro root=UUID=1c80070c-0f6f-4ded-9ce4-35db4de610b3 rhgb quiet
) = 61
read(3, ""..., 1024)                    = 0
close(3)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
[sunxq@sunxq-fc10 ~]$ 

|
对于应用程序而言,直接使用应用层的读写调用(open/read/write/close)就可以了
这些系统调用对应的底层操作由内核完成,应用程序无需关心

|
open ()
read ()

就是最给力的方法,cat程序就是这么做的。


|
open(),read()是可以的,我也看到过完成LZ这样功能的代码。

    
 
 

您可能感兴趣的文章:

  • ubuntu 中 使用 root 用户 mount 一个文件夹后,一般用户怎么访问这个文件加?
  • linux下的FTP登陆后进入到用户文件夹,怎么样配置才能让这个用户可以访问任意的文件夹
  • 在linux下,一个用户如果从另一个用户的文件夹下获取文件?
  • 我是想写批处理文件将一个文件myfile自动拷到用户的 windowssystem 下,但不知用户的windows在c: 还是其他盘,我改怎做???
  • 利用root用户修改一般用户密码的批处理文件怎么写呢?
  • Solaris中添加了新用户后,该用户的默认文件夹在哪里啊?
  • linux 新建用户后,在用户目录下没有.bash_profile文件生成
  • 请教各位!我以普通用户身份进入x window 部份文件夹被锁住了!以root用户就没问题。如何解决??
  • linux6.0下安装oracle11g, 新建用户后,在用户目录下为什么没有.bash_profile文件生成? 求教高手。谢谢!
  • 文件或文件夹,如何指定某用户的读写权限?
  • 救命呀,LINUX删除用户操作后,我的WINDOWS文件系统文件丢失了!在线等!
  • 急问:在linux里面怎么察看一个文件夹或文件有哪些用户在使用?
  • 怎样用chown改变目录的所属用户和组时,怎样把这个目录下的子目录和所有子目录里的文件的所属用户和组都同时该了啊
  • 不让用户选择文件,程序指定本地文件,Java可以实现上传到服务器吗?
  • 如何知道一个文件或文件夹的所有者ID和用户组ID
  • linux下文件继承文件夹的所属用户的问题
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • 用户通过mozilla访问页面文件,提交的参数要记录到系统的配置文件中去,如何来实现这个接口?
  • linux普通用户创建文件或目录
  • 送分了:怎么将同一组用户cd的文件.cshrc拷成我的此文件?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求内核和用户态简单易行的通信方法,用户态只需得到一个内核模块参数
  • Oracle初始参数与当前用户
  • 请问: 怎么把jsp中用户的输入做为参数传递给shell script?!!!!!!!!
  • 请问用户态与驱动传参数除了用file_operations这个结构外还有其他方法么
  • Java中用户向系统传递参数的三种基本方式实例分享
  • Fedora 7 下 root用户登录后设置了JAVA_HOME, CLASSPATH等参数,可是总在重启后 终端命令行报错bash:JAVA_HOME:command not found,请教原因!
  • 请教IPtables拒绝远程用户从22号端口连接的 关于-m参数
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 概念混乱,请专人解释:实际用户ID,有效用户ID,设置用户ID
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • proftp中,如何让FTP的用户是非Linux用户,只是FTP用户?
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • 我装的是RED HAT LINUX 8.0,我在root用户中把root用户删除了,怎办也进不了root用户
  • 怎样让普通用户拥有超级用户的权限,是把普通用户的组设为root组吗?具体怎么做,急死了
  • 我一个服务器同时接受到很多个用户的认证请求(得到用户名和密码),然后把用户名密码发给认证服务器。因为是远程认证,所
  • 我装了中软Linux3.1,启动时要求输入用户名和口令,但安装时并没有提示指定用户名,所以现在输入用户名老是错误,不能进入系统,请问该怎
  • IT科技资讯 iis7站长之家
  • 如何添加一个用户,让这个用户只能访问某个特定的目录,
  • 如何过滤系统用户只显示创建的用户?
  • 匿名用户登录nobody用户的作用
  • 怎样在程序中将普通用户切换成root用户
  • 创建用户组创建用户出错
  • 求助:忘记了root用户的密码,如何给普通用户赋root权限
  • 请教用户组和用户的问题
  • Public key用户 创建的用户不能登录
  • **********如何在UNIX上创建一个用户,此用户只能访问自己的目录***********


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3