gpt4 book ai didi

作为线程调用的 C 函数 - Linux 用户态程序

转载 作者:太空狗 更新时间:2023-10-29 11:11:29 27 4
gpt4 key购买 nike

我正在用 C 编写一个 linux 守护程序,它通过 SPI 接口(interface) (ioctl) 从 ADC 获取值。 SPI (spidev - userland) 似乎有点不稳定,会随机卡住守护进程。

我需要更好地控制对获取值的函数的调用,我正在考虑将其作为一个线程,我可以等待它完成并获取返回值,如果超时则假设它在没有这个新线程关闭守护进程本身的情况下卡住并杀死它。然后我可以采取措施,例如在重新启动之前重置 ADC。这可能吗?

我想要实现的伪示例:

(函数int get_adc_value(int adc_channel, float *value))

  1. pid = thread( get_adc_value(1,&value);//让线程调用函数
  2. wait_until_finish(pid, 超时);//等到函数完成/超时
  3. if(timeout) kill pid,重新开始//如果线程在给定时间内没有返回,则杀死它(它被卡住)
  4. else if return value sane, continue//如果成功,处理返回变量值并继续

感谢您对此事的任何投入,非常感谢示例!

最佳答案

我会尝试使用 pthreads图书馆。我已经将它用于我的一些 c 项目并取得了成功,它使您可以很好地控制运行的内容和时间。

可以在这里找到一个很好的教程: http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html

关于作为线程调用的 C 函数 - Linux 用户态程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830882/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com