我在嵌入式ARM处理器上运行Angstrom Linux.我的程序通过暴露的硬件PWM和PTP上的摄像头控制多个伺服系统.此外,它是套接字守护程序,它从任意客户端(在此实例中为Android)中获取命令.相机PTP很慢,我不想等待它完成任务,因为程序的其余部分需要响应.
我已经尝试过线程,但相机线程中的任何问题似乎都会破坏整个过程.理想情况下,我想自己发送相机来做它的事情,当它完成时让主功能知道.这是一种合适的分叉技术还是我实施了不正确的线程?
另外,我想远离大型二级库,以避免我已经拥有的任何交叉编译问题.在此先感谢您的任何建议.
解决方法 采取史蒂夫的答案的基本方法,但跳过init(8)和命名管道.fork()包含您的摄像头代码并通过常规管道或域套接字进行通信的子级.在父代码中为SIGCHLD编码信号处理程序.如果子代死,则使用wait()的返回代码查询原因.如果它自行死亡然后清理并重新启动它;如果它正常结束那么在这种情况下做适当的事情.通过最终选择的IPC与孩子沟通.这使您可以比init和域套接字或管道更多地控制子进程,特别是,与使用FIFO的时髦语义相比,它将使父进程和子进程之间的设置和通信变得更容易.
当然,如果相机代码确实存在问题,那么你所做的就是通过不取下整个程序来使故障更容易管理.理想情况下,如果在您的能力范围内,您应该让相机代码完美地工作.
总结以上是内存溢出为你收集整理的在linux中并行处理全部内容,希望文章能够帮你解决在linux中并行处理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)