<?php
system('a.out');
?>
即可调用C程序并返回结果,前提是服务器没有禁掉system函数。直接用PHP调用C写的函数好象还不行,PEAR中有个Inline_c不知道有没有用,不过可以通过参数的形式传到C程序,再返回结果。如:
C程序:test.c
------------------------
#include "stdio.h"
int main(int argc,char * argv[])
{
  if(argc!=2) {
    printf("-----------------------------------\n");
    printf("Usage : test [String]\n");
    printf("Description : test php interface!\n");
    exit(0);
  }
  printf("%s", argv[1]);
  exit(1);
}
编译:gcc test.c
------------------------
PHP程序:
------------------------
<?php
$test = 'test';
system("a.out $test");
?>
------------------------
最后结果就输出test了。

解决方案 »

  1.   

    3Q phpteam,我不点明白了,目前还不能通过php直接调用C/C++函数,只能通过命令行一样的方式。还有一点不太明白,就是当system("a.out",$test);调用完后的结果可否存在一个类或数组中通过echo返回给远端的client程序?或者还可以有其他的返回方法吗?(就是说不显示在浏览器中,而是用于自己写的client程序)
      

  2.   

    在linux下面调用
    <?
    #!/usr/local/bin/php -q
    exec("./test");
    ?>
      

  3.   

    其实我是想用PHP来写一个透明的网络传输CGI程序模块,该程序只用于接收/发送并加/解密数据包,从client程序发起http请求传送数据给web服务器,收到后调用C写的数据处理模块做处理,处理完后再由该PHP写的CGI传输模块把结果传回远端的client程序。不知这样做行不行,具体该怎么实现?
      

  4.   

    可以实现,你可以写两个程序,发送并加/解密数据包写一个,接受一个,接受到了数据,调用php处理,然后处理好了,php调用发送程序发送!
      

  5.   

    樱木能具体一点吗?我是想这样做:
    client(cgi module)发送--http-->接收&解密server(cgi module)-->数据处理(C/C++)-->发送&加密server(cgi module)--http-->client(cgi module)接收
      

  6.   

    如果只是C/S的话,直接都用C写SOCKET程序好了,何必要用PHP呢??如果是B/S,那么采用我上面那种思路就可以了,返回结果随便你放到变量中也可以。以你的想法(我设想一下)如果是B/S的话,那么只用C写个SERVER监听程序一直监听某个端口,若有信息则接收&解密--》处理,而CLIENT端用PHP+fsockopen就可以完成了,用不着再用C写个CLIENT模块了。
    SERVER监听-->CLIENT端请求(PHP->fsockopen())-->数据处理-->直接输出处理结果。可能是我想的太复杂了,再说我对SOCKET编程也不怎么熟悉,如果只是简单地用C程序处理一下,那么用我上面的程序就足够了。返回结果直接输出到浏览器也可,或者交给PHP再进行其他处理也可。如:<?php
    $test = 'test';
    $returnvalue = system("a.out $test");
    ...
    PHP中的其他处理
    ...
    ?>
      

  7.   

    我现在就是不想自己写网络传输的程序,而是利用web服务器和CGI来做,也就是想用PHP来写一个CGI程序,不知可不可行?因为一般我看书上都是用perl、C/C++来写的。返回的结果不输出到浏览器,用PHP该如何做?
      

  8.   

    就是说在PC端有自己专门的处理程序,在server端处理完后的数据通过CGI传回给PC端的程序自己处理,比如把查询的结果在该client程序中生成报表,而不是显示在浏览器中。现在我的问题是不知用PHP来写这个CGI程序行不行,因为我看一般都是用perl、c/c++写的,而且用PHP都是显示在浏览器中,所以不知道如果不显示在浏览器中该如何做?