【发布时间】: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 来运行你的应用程序。