代码之家  ›  专栏  ›  技术社区  ›  KPexEA

如何从Perl或PHP(CGI-Bin使用Linux上的Apache)调用C++二进制文件?

  •  1
  • KPexEA  · 技术社区  · 17 年前

    我有一个网站CGI bin程序,用C++编写。

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

    C++程序是否仍然能够从STDIN读取POST命令,或者必须通过Perl或PHP读取,然后转发。

    3 回复  |  直到 17 年前
        1
  •  4
  •   gpojd    17 年前

    您可以使用Perl的backticks或“system”命令来运行shell命令。此外,perl有许多“内联”类,允许您用其他语言编写代码,以便在perl中调用,包括一个用于 C++ . 如果你找不到有效的东西,也许你可以用这个包做你自己的包装。

        2
  •  2
  •   SoapBox    17 年前

    您可以使用PHP的system()函数来执行shell命令,您可以使用它来启动另一个程序。然后,该程序的STDOUT将转到与php的STDOUT相同的位置(到HTTP连接)。您可能需要做一些修改才能让stdin从get/post/etc读取。

    但最有可能的是,网站提供商已经禁用了您以这种方式执行程序的能力。这可能是一种安全风险,如果它们专门只允许php和perl,那么它们可能会专门禁用尽可能多的运行非php/perl的方法。所以,简而言之,你可能运气不好。

        3
  •  0
  •   Matthew Smith    17 年前

    看我的 Awstats Wrapper 一些解决我问题的PHP代码的博客文章。我的方法是构造一个命令行,该命令行从CGI查询参数设置了正确的环境变量,然后对结果输出进行替换,以便返回CGI的任何链接都将转到我的包装器脚本。我还取消了CGI的头输出,因为PHP提供了自己的头。