从 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。
任何提示,如何解决?