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

时间:2012-08-11 00:43:16

标签: c++ linux system-calls supervisord

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

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

我检查的事项清单:

  1. 流程的当前工作目录是正确的
  2. Supervisord和我的进程以root身份运行
  3. 目录和文件的chown是root
  4. 还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

system("sudo cp ./Scripts/x.sh /tmp/");

sudo是获取超级用户权限的命令。它通常会提示您输入密码(但在某些情况下,它会跳过它)。如果它没有控制台提示你,它可能会失败。

无论如何你不应该这样做。您只需编写system("cp ./Scripts/x.sh /tmp/")并使用root访问权启动您的程序(supervisord可能有办法执行此操作)。