如何用PHP实现通过Web执行C/C++程序

一、简介

如果你对Unix/Linux有所了解的话,你应该知道他们大都自带了C和C++的编译器,分别是GCC和G++。Unix在程序安装及Make等许多地方使用到了这些编译器。利用一些控制台命令,C++和PHP。我将向你介绍怎样生成一个完整的C++程序例子,他可以在用PHP程序来执行,并能获得相应的输出结果。

我将先生成C++程序代码,并编译它,然后讨论我们将如果通过使用PHP的函数passthru来执行这个程序。从某种意义上来说,这边文章给我们提供一种通过Web页面来访问一般程序的方法。

为了能更好的理解这篇文章,你应该有一台运行着apache和最新版本php的unix/Linux服务器。同时也应该掌握C++, unix控制台命令,当然一些PHP的编程经验也是必需的。

二、编写一个C++程序

例如,我们可以写一个能够通过命令行还接收参数的C++简单程序,并命名为Sampleapp.然后我们能够按照下面的方式给他传递三个不同的参数 :

Sampleapp ?参数一 ?参数二 ?参数三

这个程序的功能是能输出传递给他的参数的个数和每个参数的值,然后我们可以用PHP脚本程序来执行编译好的C++程序。

利用你习惯的文本编辑器,新建一个名为Sampleapp.cpp的文件,再此文件中输入如下的代码:

#include <iostream.h>
int main(int argc, char* argv[])
{
cout << endl << "You passed "
<< argc-1 << " arguement"
  << (argc-1 == 1 ? "" : "s")
<< "." << endl;
  cout << (argc-1 == 1 ? "This" : "These")
  << " arguement"
<< (argc-1 == 1 ? "" : "s")
<< " "
  << (argc-1 == 1 ? "is" : "are") << ": "
<< endl << endl;
  for(int i = 1; i < argc; i++)
  cout << "[" << i << "] "
<< argv[i] << endl;
  return 0;
  }

这个C++程序包含的程序的入口点:main(),main()函数带了两个参数:argc(命令行传入参数的个数)和argv(一个包含了所传参数实际值的字符型指针数组)。这个两个参数能被C++编译器自动捕获。

cout << endl << "You passed " << argc-1
<< " arguement"
  << (argc-1 == 1 ? "" : "s")
<< "." << endl;
;

这句话的意思是获得从执行命令行传入的参数的个数。Argv这个字符型指针数组是从0开始检索的,它至少包含一个实际的值(即本程序的路径和名称),这个值由C++编译器自动地附加上去。条件操作符”?”是用来判断命令行传入地参数是否多于一个。例如,如果命令行过传入两个参数,我们地程序将输出如下信息:

You passed 2 arguments.
cout << (argc-1 == 1 ?
"This" : "These")
  << " arguement"
<< (argc-1 == 1 ? "" : "s")
<< " "
  << (argc-1 == 1 ? "is" : "are")
<< ": " << endl << endl;

接下来,我们同样用条件操作符来输出另一句话。不过要记住,即使我们不从程序执行命令行传入任何参数,main函数地argv[]参数也包含一个值。同样地,如果我们从命令行传入两个参数给程序,程序将输出如下地信息:

These arguments are:
for(int i = 1;
i < argc; i++)
  cout << "[" << i << "] "
<< argv[i] << endl;

最后,main函数逐一的输出命令行传入的每个参数,它用到了一个简单的for(;;)循环语句,这个函数能根据参数的个数将参数值一个一个的输出。假如我们传给程序两个参数”first”和second”, for循环输出的结果如下:

[1] ?first
[2] ?second

时间: 2024-10-29 12:41:09

如何用PHP实现通过Web执行C/C++程序的相关文章

用PHP实现通过Web执行C/C++程序

c++|web|程序|执行 一,简介 如果你对Unix/Linux有所了解的话,你应该知道他们大都自带了C和C++的编译器,分别是GCC和G++.Unix在程序安装及Make等许多地方使用到了这些编译器.利用一些控制台命令,C++和PHP, 我将向你介绍怎样生成一个完整的C++程序例子,他可以在用PHP程序来执行,并能获得相应的输出结果.我将先生成C++程序代码,并编译它,谈后讨论我们将如果通过使用PHP的函数passthru来执行这个程序.从某种意义上来说,这边文章给我们提供一种通过Web页面

PHP中通过Web执行C/C++应用程序

c++|web|程序|执行 一.简介 如果你对Unix/Linux有所了解的话,你应该知道他们大都自带了C和C++的编译器,分别是GCC和G++.Unix在程序安装及Make等许多地方使用到了这些编译器.利用一些控制台命令,C++和PHP, 我将向你介绍怎样生成一个完整的C++程序例子,他可以在用PHP程序来执行,并能获得相应的输出结果.我将先生成C++程序代码,并编译它,谈后讨论我们将如果通过使用PHP的函数passthru来执行这个程序.从某种意义上来说,这边文章给我们提供一种通过Web页面

&amp;#106avascript小技巧之如何用滑鼠控制Web页面

web|技巧|控制|页面     第一集 如何用滑鼠控制Web页面 在这一部分首先要为你展示的JavaScript特性是将你的滑鼠移到这个不同颜色的连结上面,此时看看浏览器下的状态列有何结果,然后这样的功能我们可以与JavaScript的功能相结合.怎样做到的呢 以下就是这一个连结的作法: <a href="tpage.htm" > 在这儿你只要在传统 <a> 的标签中加入 onMouseOver 的 method 就可达成你要的效果了.这里的 window.s

JavaScript小技巧之如何用滑鼠控制Web页面

javascript|web|技巧|控制|页面 第一集 如何用滑鼠控制Web页面 在这一部分首先要为你展示的JavaScript特性是将你的滑鼠移到这个不同颜色的连结上面,此时看看浏览器下的状态列有何结果,然后这样的功能我们可以与JavaScript的功能相结合.怎样做到的呢 以下就是这一个连结的作法: <a href="tpage.htm" > 在这儿你只要在传统 <a> 的标签中加入 onMouseOver 的 method 就可达成你要的效果了.这里的 w

通过Web执行C/C++应用程序

一.简介 如果你对Unix/Linux有所了解的话,你应该知道他们大都自带了C和C++的编译器,分别是GCC和G++.Unix在程序安装及Make等许多地方使用到了这些编译器.利用一些控制台命令,C++和PHP, 我将向你介绍怎样生成一个完整的C++程序例子,他可以在用PHP程序来执行,并能获得相应的输出结果.我将先生成C++程序代码,并编译它,谈后讨论我们将如果通过使用PHP的函数passthru来执行这个程序.从某种意义上来说,这边文章给我们提供一种通过Web页面来访问一般程序的方法. 为了

测试 XML Web 服务和应用程序(自MS)

web|xml|程序 测试 XML Web 服务和应用程序 注意:在公开发布的 Visual Studio.NET Beta 2 中可能不提供某些功能. 随着松散耦合的计算和 XML Web 服务的不断增长,各个组织越来越需要能够提供成功解决方案的工具,并且这些解决方案可以满足全球用户的不同需要.Visual Studio.NET 不仅为构建 XML Web 服务和应用程序提供了业界领先的工具,而且其中包括的某些重要功能可以用来测试这些应用程序的可扩展性.性能和功能完整性.应用程序中心测试 (A

提高基于Dojo的Web 2.0应用程序的性能

Web 2.0 应用程序最注重的一个方面就是用户体验,用户希望使用的是一个快速稳定的 Web 2.0 应用.而基于 Dojo 的 Web 2.0 应用经常需要下载大量 Dojo 代码到客户端执行,而且会不时的向后台发起 IO 请求,响应速度受到很大影响.本文通过演示一些实用的技巧来提高 Dojo 的性能,帮助开发人员找出 Web 2.0 应用程序的性能瓶颈. Web 2.0 与 Dojo 介绍 Web 2.0 应用以其丰富的用户体验,快捷的响应速度越来越受到众多用户的欢迎.Google Map,

用Dojo Objective Harness对Web 2.0应用程序进行单元测试

单元测试是保证软件开发质量的一个重要部分,对于敏捷和极限编程开发方法尤其如此.通常,对 Web 2.0 客户端用户界面进行自动的单元测试很困难,所以很少有人去做尝试.然而,Dojo 提供了一个单元测试工具,借此可以评估 JavaScript 的功能及用户界面的可视性.经过这个工具彻底测试过的用户界面最终包含的 Bug 数量会极大的减少.本文阐述了 Dojo Objective Harness (DOH) 的主要特点并通过与其它 Web 2.0 应用程序测试工具的比较展示了其强大的功能. 单元测试

WEB容器调用spark程序分析数据

问题描述 WEB容器调用spark程序分析数据 请教各位大神,如何在web容器中(如tomcat)来调用spark程序啊,网上看到的都是自己把程序生成jar包,然后调用spark-submit来执行!! 解决方案 楼主的问题是怎么解决的,我们现在也要这么做,能不能给点指导,小弟在这先谢谢了 解决方案二: 可以参考 一下 这个 http://www.aboutyun.com/thread-11014-1-1.html