一、简介
如果你对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;
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器