免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: baileyking
打印 上一主题 下一主题

LINUX下如何实现运行程序中的变量值的动态改变! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-10-27 09:48 |只看该作者
原帖由 baileyking 于 2007-10-27 09:42 发表


能说的详细一点么?

比如我写一个配置文件,文件的的内容是 var 1
那么程序接受信号如何读取文件,程序如何把配置文件中的值1 赋值给程序中的变量呢?

这就是配置文件格式的问题了。

论坛徽章:
0
12 [报告]
发表于 2007-10-27 11:49 |只看该作者
原帖由 baileyking 于 2007-10-27 09:42 发表


能说的详细一点么?

比如我写一个配置文件,文件的的内容是 var 1
那么程序接受信号如何读取文件,程序如何把配置文件中的值1 赋值给程序中的变量呢?



做一个动态更新吧修改了什么,告诉程序,让程序重新读取这个值

论坛徽章:
0
13 [报告]
发表于 2007-10-27 14:26 |只看该作者
用信号.`
对于以daemon形式运行的进程,一般都是用HUP信号通知配置改变(因为不会冲突).不过你也可以使用自定义信号.
改完配置文件后发个HUP信号给进程.
进程写一个相应的信号处理程序,改变那个变量的值,甚至是重读所有配置文件.

论坛徽章:
0
14 [报告]
发表于 2007-10-27 21:15 |只看该作者
ok,研究研究。。。。我!
写好了程序贴出来给大家看看!

论坛徽章:
0
15 [报告]
发表于 2007-10-28 13:28 |只看该作者
原帖由 Edengundam 于 2007-10-27 08:58 发表
接收信号, 然后读配置文件. 很多守护进程就用这种办法. 一般是SIGHUP吧, 根据你自己情况来定.



请问如何捕捉信号?   配置文件如果改变,程序如何捕捉信号?

论坛徽章:
0
16 [报告]
发表于 2007-10-28 13:32 |只看该作者
原帖由 wuxiangzhi 于 2007-10-27 11:49 发表



做一个动态更新吧修改了什么,告诉程序,让程序重新读取这个值



可是我不打算在写个程序通知另一个程序 配置文件已经改变。

能不能我的配置文件改变, 应用程序就能过捕捉到程序改变的信号呢.

论坛徽章:
0
17 [报告]
发表于 2007-10-28 14:12 |只看该作者
我也在找这个,类似
FindFirstChange
FindNextChange

论坛徽章:
0
18 [报告]
发表于 2007-10-28 20:26 |只看该作者
原帖由 baileyking 于 2007-10-28 13:28 发表



请问如何捕捉信号?   配置文件如果改变,程序如何捕捉信号?


自己写信号捕捉程序.这个内容你得看看书.
但是即使你写了信号捕捉程序,你改完文件也必须手动发个信号通知它.

我以前常用的方法是用一个bash程序来包裹修改配置的脚本(我是通过sed -i脚本来修改配置文件),然后在这个bash程序的末尾写一个kill -HUP $pid来通知进程.
或者你可以直接在程序里搞个定时器,定时检查配置文件的状态,看到文件被更改了就重读配置.这个就是不能及时.

论坛徽章:
0
19 [报告]
发表于 2007-10-28 21:20 |只看该作者
原帖由 baileyking 于 2007-10-28 13:32 发表



可是我不打算在写个程序通知另一个程序 配置文件已经改变。

能不能我的配置文件改变, 应用程序就能过捕捉到程序改变的信号呢.


可以用 F_NOTIFY ,具体参见
man 2 fcntl
相关章节

反正还是用信号。

注意,此方法仅用于linux 2.4+
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP