我有一个可执行文件,其中有一些系统命令(基本上它复制和运行脚本文件)。当我独立测试时(像使用 sudo 一样启动可执行文件)system()
工作正常。
现在我将我的可执行文件与 supervisord
集成。我的可执行文件的功能工作正常,但 system()
命令失败,返回 255/-1(8 位表示)。
我检查过的事情列表:
- 进程当前工作目录正确
- Supervisord 和我的进程正在以 root 身份运行
- chown 目录和文件是 root
还有其他建议吗?
最佳答案
system("sudo cp ./Scripts/x.sh /tmp/");
sudo 是获取 super 用户权限的命令。它通常会提示您输入密码(但在某些情况下,它会跳过它)。如果没有控制台提示,可能会失败。
无论如何你不应该这样做。您只需编写 system("cp ./Scripts/x.sh/tmp/")
并以 root 访问权限启动您的程序(supervisord 可能有办法做到这一点)。
关于c++ - System() 失败,返回值 255/-1(8 位表示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910908/