命令在程序脚本中调用与串口执行结果不一致?

来源:互联网 发布:四万亿计划后果 知乎 编辑:程序博客网 时间:2024/06/03 15:47

  这两天碰到一个bug,调试了好久,这里做一下记录,以免以后再掉入这个坑。

bug描述

  在/usr/bin/目录下,有命令wpa_cli,(这是hostapd中的命令。用来配置无线网络的)。我测试路由器WPS功能时,如果Extender(我测试的板子)通过WPS连接上RootAP时,Extender会调用一个action_file:lib/wifi/wps-supplicant-update-uci。脚本wps-supplicant-update-uci中会调用wpa_cli … status.来获取Extender的sta接口的一些状态信息。 但是发现wpa_cli的输出为空

bug调试

  该Bug仅在运行WPS连接RootAp根据CONNECTED状态调用lib/wifi/wps-supplicant-update-uci时出现,手动在串口运行wpa_cli status可以获取到信息。手动执行脚本lib/wifi/wps-supplicant-update-uci(传入对应参数)也可以执行成功。

bug解决

  程序调用脚本,与手动调用脚本结果不一致,很可能是因为环境变量的问题。通过env打印环境变量,将串口的环境变量在脚本中重新设置一遍,发现程序调用脚本也能成功了。 最终定位问题,脚本中缺少环境便令PATH导致了这个bug。

0 0