1

我有一个用 c++ 编写的网站 cgi-bin 程序。

不幸的是,我朋友网站的网站提供商只允许 Perl 或 PHP cgi-bin 脚本。

有没有一种简单的方法来简单地拥有一个非常小的 Perl 或 PHP 包装器,它只调用 c++ 编译的二进制文件?

c++ 程序是否仍然能够从标准输入读取 POST 命令,还是必须由 Perl 或 PHP 读取然后转发。

4

3 回答 3

4

您可以使用 Perl 的反引号或“系统”命令来运行 shell 命令。此外,perl 有很多“内联”类,允许您用其他语言编写代码以在 perl 中调用,包括用于C++的一个。如果您找不到有用的东西,也许您可​​以使用该包制作自己的包装器。

于 2008-11-12T01:31:40.520 回答
2

你可以使用 PHP 的 system() 函数来执行一个 shell 命令,你可以用它来启动另一个程序。然后该程序的 STDOUT 将转到与 php 的 stdout 相同的位置(到 HTTP 连接)。你可能不得不做一些事情来让标准输入从 get/post/etc 中读取。

但很可能网站提供商已禁用您以这种方式执行程序的能力。这可能是一个安全风险,如果他们专门只允许 php 和 perl,那么他们可能会专门禁用尽可能多的运行非 php/perl 的方法。所以,简短的回答是你可能不走运。

于 2008-11-12T01:21:50.663 回答
0

有关解决我的问题的一些 PHP 代码,请参阅我的Awstats Wrapper博客文章。我的方法是构建一个命令行,该命令行从 CGI 查询参数中设置了正确的环境变量,然后对结果输出进行替换,这样任何返回 CGI 的链接都会转到我的包装脚本。由于 PHP 提供了自己的标头,因此我还对 CGI 的标头输出进行了核对。

于 2008-11-12T02:09:07.433 回答