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

Python脚本通过startup.sh调用subprocess启动C应用失败问题

Python脚本开机启动时调用C应用失败的解决办法

问题现象

使用Python 3.8编写程序,通过subprocess调用一个C语言编写的应用:

  • 直接在命令行运行该C应用正常
  • 直接执行Python脚本时,subprocess调用该C应用也正常
  • 将Python脚本加入startup.sh设置开机启动后,C应用进程无法启动

原调用代码

def start_getPID():
    
    #sp.call('app start watchpy', shell=True)
    subprocess.run('app start watchpy', shell=True)
    logging.info('Starting watchpy')
    time.sleep(5)
    try:
      getPID = int(subprocess.run(["pidof", "-s", "watchpy"], capture_output=True).stdout)
      logging.info(f'watchpy PID: {getPID}')
    except:
      logging.warning('An exception occurred')
      time.sleep(5)
      start_getPID() 

排查过程

日志显示代码持续抛出异常,排查后发现app start watchpy命令未正确执行:

  • 尝试subprocess.call、subprocess.Popen等多种调用方式均无效
  • 报错提示找不到app命令

解决方法

确认是系统PATH环境变量问题:开机启动脚本的PATH环境变量不包含app命令所在路径。改用绝对路径调用后问题解决,调整后的代码如下:

subprocess.call(["/mnt/legato/system/bin/app", "start","watchpy"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:08:17