c++ - System() 失败,返回值 255/-1(8 位表示)

标签 c++ linux system-calls supervisord

我有一个可执行文件,其中有一些系统命令(基本上它复制和运行脚本文件)。当我独立测试时(像使用 sudo 一样启动可执行文件)system() 工作正常。

现在我将我的可执行文件与 supervisord 集成。我的可执行文件的功能工作正常,但 system() 命令失败,返回 255/-1(8 位表示)。

我检查过的事情列表:

  1. 进程当前工作目录正确
  2. Supervisord 和我的进程正在以 root 身份运行
  3. 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/

相关文章:

c++ - 双指针和二维数组有什么关系?

linux - 为以用户身份运行的守护进程存储 pid 文件

linux - 用于 BASH Shell 的 Bcrypt?

linux - 语法错误 源行为 1

c - mmap 与 mmap64 有什么区别吗?

c++ - <ctime> 中的 clock() 函数如何访问系统时钟?

c++ - 有没有办法从 C++ 中区分文件?

c++ - Variadic 模板和 "expected a type"错误

c++ - std::stoi 的版本拒绝任何非数字

c - 如何使用 Linux 系统调用 read() 来控制文件的数据内容?