免费注册 查看新帖 |

Chinaunix

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

[C] 给运行中的程序传入参数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-23 20:15 |只看该作者 |倒序浏览
如何给运行中的程序传入参数呢

思路如下,

READ程序不断地从RTU读取数据,然后存入一个结构

而我想做的是再写一个C程序 程序N,能够给运行中的READ程序传入参数,然后让它返回我要的值


同学给我说windows下面的dll可以实现,那么linux下面的.so文件可以吗

我该如何解决这个问题?

论坛徽章:
0
2 [报告]
发表于 2008-11-23 21:17 |只看该作者
你不跟READ协商好就向人家要东西,太霸道了吧?。

论坛徽章:
0
3 [报告]
发表于 2008-11-23 21:20 |只看该作者
原帖由 cugb_cat 于 2008-11-23 21:17 发表
你不跟READ协商好就向人家要东西,太霸道了吧?。



那怎么协商呢,我有READ的代码

论坛徽章:
0
4 [报告]
发表于 2008-11-23 21:23 |只看该作者
原帖由 dhlilong 于 2008-11-23 21:20 发表



那怎么协商呢,我有READ的代码

制定协议,READ做服务端,你的程序做客户端。

论坛徽章:
0
5 [报告]
发表于 2008-11-23 21:35 |只看该作者
原帖由 cugb_cat 于 2008-11-23 21:23 发表

制定协议,READ做服务端,你的程序做客户端。


my god ,听起来这么庞大,有没有别的方法解决,就比如通过动态函数库调用?直接调用里面的的某个函数来获取里面的数据

这个是现在做温度监控系统所用的,RTU是设备,READ程序给rtu发送数据,然后RTU根据得到的数据返回相应的数据,并存入结构体,但是我需要分别return结构体里面的东西

而C语言中main中只能return int型,所以我想写很多的小c程序,每个小程序负责读取相应的地址,通过snmp传送给server


所以在制定协议有些麻烦了,本来的解决方法是利用 system(“./READ 参数”)来获取信息,但是老师要求不能重复运行READ,RTU不支持并发  

所以只能运行一个READ,通过别的程序来获取其中的信息

[ 本帖最后由 dhlilong 于 2008-11-23 21:48 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-11-23 21:50 |只看该作者
read程序给RTU传参数是用什么方式?

如果是命令行的话,用管道就够了.如果是用socket,比较复杂的办法是用ptrace相关函数,可以很轻易地获取被监控程序的系统调用及参数,RTU的获取或返回是通过socket的时候可以用.还一个较简单方法,用你自已写的程序代替RTU来跟READ通信,然后另一边也跟真的RTU程序通信,做个中转.这样你就能截获中间所有数据了.

论坛徽章:
0
7 [报告]
发表于 2008-11-23 22:05 |只看该作者
原帖由 galaxywar 于 2008-11-23 21:50 发表
read程序给RTU传参数是用什么方式?

如果是命令行的话,用管道就够了.如果是用socket,比较复杂的办法是用ptrace相关函数,可以很轻易地获取被监控程序的系统调用及参数,RTU的获取或返回是通过socket的 ...



是给它的main函数传参   都是用的C程序   READ就是个 打开串口 -  发送数据-  读取数据 -关闭串口 -返回数据的程序

自己的小程序也使用C写的,因为不会写SNMP代理,所以通过exec给扩展了,自己写个mib,然后远程通过snmpwalk来运行小程序,小程序给R E A D 传入参数,获取数据返回

论坛徽章:
0
8 [报告]
发表于 2008-11-24 01:15 |只看该作者
进程间通信,还是一个进程的不同模块?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2008-11-24 01:39 |只看该作者
原帖由 dhlilong 于 2008-11-23 21:35 发表


my god ,听起来这么庞大,有没有别的方法解决,就比如通过动态函数库调用?直接调用里面的的某个函数来获取里面的数据

这个是现在做温度监控系统所用的,RTU是设备,READ程序给rtu发送数据,然后RTU根据 ...

呵呵,没那么恐怖.不要一看到服务器/客户端就觉得很庞大,这只是一种模型的名字而已

论坛徽章:
0
10 [报告]
发表于 2008-11-24 13:06 |只看该作者
用进程间通讯的方式,  消息队列,共享内存,OCKET,pipe都可以,当然还可以发signal, 写文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP