【问题标题】:Open external application from a app started as daemon从作为守护进程启动的应用程序打开外部应用程序
【发布时间】:2018-04-10 12:17:40
【问题描述】:

我有一个问题。我有一个 C++ 应用程序,它由启动时启动的脚本启动。发生这种情况的设备是一个小型计算机(树莓派风格),没有图形界面,只能访问控制台。

当 c++ 应用程序运行 sshpass、sftp 或 ssh 等其他应用程序时,会出现问题,它会抛出错误 /bin/sh application not found(前面提到的任何应用程序)。但是,如果我终止该进程并手动运行它,一切都会像魅力一样工作。我错过了什么? 外部应用程序与 c++ 应用程序位于同一文件夹中,并像这样调用 ./application

谢谢

编辑:我使用 system() 来调用应用程序。 我试过 execv、execve 还是不行。

【问题讨论】:

  • 您需要指定如何“运行”其他应用程序——system() 调用?使用 fork() 和 exec()? posix_spawn()?创建进程()?其他一些调用取决于您未说明的操作系统、运行时 C 库以及其他未提及但非常相关的信息?
  • 我正在使用 system() 来调用应用程序
  • 你检查了应用的 CWD 吗?
  • 在 *nix 系统上,更喜欢 forking 并调用 execve 或其 front ends 之一...
  • system() execs /bin/sh 来运行你的应用程序。

标签: c++ linux unix


【解决方案1】:

如果有人遇到同样的问题,我会回答自己。

我的启动器脚本使用完整路径调用我的应用程序。我做了什么来修复它,我移动到应用程序文件夹(cd /appPath/),然后正常启动应用程序(./application),这解决了我的问题。

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多