0

いくつかのシステム コマンドを含む実行可能ファイルがあります (基本的には、スクリプト ファイルのコピーと実行を行います)。スタンドアロンでテストすると(sudoのように自分で実行可能ファイルを起動して)、system()正常に動作しています。

ここで、実行可能ファイルを に統合しsupervisordます。実行可能ファイルの機能は正常に動作していますが、system()コマンドは 255 / -1 (8 ビット表現) で失敗します。

私がチェックしたことのリスト:

  1. プロセスの現在の作業ディレクトリが正しい
  2. Supervisord と私のプロセスはルートとして実行されています
  3. ディレクトリとファイルのchownがルート

他の提案はありますか?

4

1 に答える 1

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

sudo は、スーパーユーザー権限を取得するためのコマンドです。通常、パスワードの入力を求められます (ただし、状況によってはスキップされます)。プロンプトを表示するコンソールがない場合、失敗する可能性があります。

とにかく、これを行うべきではありません。root アクセスでプログラムを作成して起動するだけsystem("cp ./Scripts/x.sh /tmp/")です (supervisord にはおそらくそれを行う方法があります)。

于 2012-08-11T03:06:04.790 に答える