当前位置: 技术问答>linux和unix
关于守候进程的请教
来源: 互联网 发布时间:2016-06-10
本文导语: 小弟现在做Linux下面的应用程序: 其中要做一个检测算法要求每隔一定时间(大概是100MS)调度一个算法来处理串口上报的数据。 我现在有个想法不知道是否可行望哥哥们给与指点,谢谢了。 写两个进程: 第...
小弟现在做Linux下面的应用程序:
其中要做一个检测算法要求每隔一定时间(大概是100MS)调度一个算法来处理串口上报的数据。
我现在有个想法不知道是否可行望哥哥们给与指点,谢谢了。
写两个进程:
第一个进程为主进程用来接受串口上报的数据等等(包括其他的很多事情),当串口有数据上报时保存数据到一个内存地址当中(该内存为后面所说的两进程间共享的内存),并设置一个标志位来标示数据发生变化且已经到达。
第二个进程使用守护进程的方式一直查询进程一所设置的标志位,一当查询成功,该守护进程调度检测算法来处理这些数据。
注:两进程间通信方式使用共享内存段的方法。
希望大家给与意见。谢谢!
其中要做一个检测算法要求每隔一定时间(大概是100MS)调度一个算法来处理串口上报的数据。
我现在有个想法不知道是否可行望哥哥们给与指点,谢谢了。
写两个进程:
第一个进程为主进程用来接受串口上报的数据等等(包括其他的很多事情),当串口有数据上报时保存数据到一个内存地址当中(该内存为后面所说的两进程间共享的内存),并设置一个标志位来标示数据发生变化且已经到达。
第二个进程使用守护进程的方式一直查询进程一所设置的标志位,一当查询成功,该守护进程调度检测算法来处理这些数据。
注:两进程间通信方式使用共享内存段的方法。
希望大家给与意见。谢谢!
|
你的方案不错,完全能满足你的需求。
我也提供点建议:
1. 为何不用线程呢? 省去了共享内存这一步,程序简单得多,一个进程,两个线程就足够了。
2. 为何不尝试用 select 接口, 使用异步处理的方法,一个进程,一个线程就足够了。
|
2. 为何不尝试用 select 接口, 使用异步处理的方法,一个进程,一个线程就足够了。
也可以使用poll接口了.
创建一个socket接口 然后 使用select 或者poll
异步等待.. 具体请搜索查看select 或者 poll的用法,.
如:
rc = poll(ufds, nfds, -1);
也可以使用poll接口了.
创建一个socket接口 然后 使用select 或者poll
异步等待.. 具体请搜索查看select 或者 poll的用法,.
如:
rc = poll(ufds, nfds, -1);