从作为守护进程启动的应用程序打开外部应用程序

Posted

技术标签:

【中文标题】从作为守护进程启动的应用程序打开外部应用程序【英文标题】: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 来运行你的应用程序。 【参考方案1】:

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

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

【讨论】:

以上是关于从作为守护进程启动的应用程序打开外部应用程序的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Celery 守护进程看不到任务?

请教各位一个Hadoop的问题.我始终启动不了secondarynamenode

基于 Spring Boot (Tomcat) 的应用程序作为守护进程 - 如何停止?

Unix环境高级编程(十四)守护进程实现时间服务器

部署 CherryPy(守护进程)

supervisor安装及配置——管理守护进程的福利