cgi から system() を呼び出すと、常に -1 (エラーを意味する) が返されます。errno は 10、ECHILD に設定されます。
以下を含む test.cgi:
cout << "/bin/true " << system("/bin/true") << endl;
cout << "/bin/false " << system("/bin/false") << endl;
cout << "/bin/touch /tmp/foo" << system("/bin/touch /tmp/foo") << endl;
./test.cgi が返すように、コマンド ラインから呼び出されます。
/bin/true 0
/bin/false 256
/bin/touch /tmp/foo 0
ただし、これを Web ブラウザーからのリンクとして呼び出すと、(予想される不正な形式のヘッダー エラー メッセージの後) が返されます。
/bin/true -1
/bin/false -1
/bin/touch /tmp/foo -1
どちらの場合もコマンドが実行されることを確認しましたが (ファイル /tmp/foo が作成されます)、httpd (mongoose、ARM9、Linux) を介してコマンドを呼び出すと -1 が返されます。
ヒント、修正方法はありますか?