-4

在我的 CGI 脚本中:

system("/home/httpd/cgi-bin/hbplus/hbplus /home/httpd/html/pdb1wdk.ent");

print $?;

系统命令将文件(例如pdb1wdk.ent)传递给hbplus. 这是一个用 C 语言编写的 exe 文件,它处理输入文件以生成输出文件。

该命令在命令提示符下完美运行,并在当前工作目录中创建一个文件,但当它从我的 CGI 脚本使用system.

我也尝试hbplus过从 Python 脚本和 shell 脚本运行并从 Perl CGI 调用它们,但这会导致分段错误。

4

1 回答 1

5

值 139 - 0x8B-$?表示它由于分段违规而失败 - SIGSEGV - 并且存在核心转储。

我最好的猜测是,当您的 C 程序从 CGI 帐户运行时,它没有打开输入文件的必要权限,此外它没有正确处理打开失败,因此它继续使用无效的文件句柄.

pdb1wdk.ent使用类似的东西更改权限

chmod 744 pdb1wdk.ent

看看症状是否有变化。

如果这可行,请不要忘记返回并进行更改hbplus,以便它正确处理文件打开异常

于 2012-07-26T08:37:00.757 回答