You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Beaglebone平台下C调用Python脚本无法写入buf文件问题排查

解决BeagleBone上C调用Python脚本无法更新buf文件的问题

嘿,这个问题我之前也碰到过!核心原因大概率是工作目录不匹配,给你拆解下:

当你手动在终端跑Python脚本时,脚本的工作目录就是你当前所在的/root/LED_Tester_V1/LuxRead/,所以buf文件乖乖生成在这个目录里。但用C的system()调用时,C程序的工作目录不一定是这个路径——比如如果你的C程序是在其他目录编译运行的,脚本里用相对路径open('buf', 'w')就会把文件写到C程序的工作目录里,而不是你预期的位置,看起来就像buf没更新。

给你两个靠谱的修复方案:

方案1:给buf文件用绝对路径(最稳妥)

直接修改Python脚本里的文件打开代码,把相对路径换成绝对路径:

# 原来的f = open('buf', 'w')改成下面这样
f = open('/root/LED_Tester_V1/LuxRead/buf', 'w')

这样不管脚本在哪个目录运行,都会精准写入到你指定的位置,完全避开工作目录的问题。

方案2:调用脚本前先切换目录

修改C语言里的宏定义,先cd到脚本所在目录再执行脚本:

#define luxreadpy "cd /root/LED_Tester_V1/LuxRead && /usr/bin/python lux.py"
system(luxreadpy);

这样脚本运行时的工作目录就和你手动运行时完全一致,相对路径就能正确找到buf文件。

额外排查小技巧

虽然你说权限已经设为777,但可以加个小验证:在Python脚本里加上当前工作目录的打印,方便确认问题:

import os
print("脚本当前工作目录:", os.getcwd())

然后通过C程序调用后,查看输出(如果C程序有控制台输出的话),就能一眼看到脚本到底在哪个目录运行,是不是和你预期的一样。

内容的提问来源于stack exchange,提问作者Pukacza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:33:53