使用exec()函数或者使用system()函数,passthru()函数,这几个函数有一定的危险性,建议使用一下escapeshellcmd()函数过滤一下。

解决方案 »

  1.   

    可是,调用的程序是已驻留在系统中的啊!
    exec()这些可以吗?
      

  2.   

    可以使用Shared Memory Functions(只适用于linux,php编译时要加入参数--enable-shmop )例子(在redhat 6.0, php 4.2.0rc3下测试通过):
    说明:C程序读取共享内存区,如果不为0,则输出,并清空
      PHP程序对共享内存区进行写操作。
      ps.可以在C程序中再开一块共享内存区,作为返回信息。
    PHP程序
    ----------------------------------------------------
    <?php
    $shm_id = @shmop_open(74, "w", 0, 0);
    if(!$shm_id) {
    echo "Couldn't get shared memory segment\n";
    exit();
    }$shm_size = shmop_size($shm_id);
    echo "SHM Block Size: ".$shm_size."\n";$lRet = shmop_write($shm_id, "test 1", 0);
    echo "write ".$lRet." bytes to shm \n";shmop_close($shm_id);
    ?>
    ---------------------------------------------------
    Ansi C 程序
    ---------------------------------------------------
    #include <sys/types.h> 
    #include <sys/ipc.h> 
    #include <sys/shm.h> #define SHMKEY 74 
    #define K 1024 int shmid; 
    char *addr;cleanup() 

    shmdt(addr);
    shmctl(shmid,IPC_RMID,0); 
    exit(0); 

    main() 

    int i; for (i=0;i<20;i++) 
    signal(i,cleanup); shmid=shmget(SHMKEY,128*K,0777|IPC_CREAT);
    addr=shmat(shmid,0,0);
    memset(addr,'\0',128*K);
    while(1)
    {
    if(strncmp(addr,"")!=0)
    {
    printf("%s\n",addr);
    memset(addr,'\0',128*K);
    }
    sleep(1);
    }
    }
    ---------------------------------------------------
      

  3.   

    终于有人回答了,太高兴了!
    但是,我还是有些问题,呵呵1.php程序中的shmop_read是操作共享内存的函数吧。我在php4完全 中文手册上找不到,能否给出这类些的具体用法,谢谢2.我的驻留程序是用vc6在win2000编的,它除了监视php的信息外还要监视串口信息,大侠能帮我看看vc6,win2000下怎么做监视 php?因为我vc不是很好,但现在又很急!谢谢了
      

  4.   

    1.去下载一份最新版本的帮助:
    http://www.php.net/distributions/manual/php_manual_en.chm2.我给的例子just for linux,如果要在2000下实现这个功能,变通的
    方法很多,例如可以用Socket functions:在驻留程序开一个端口(TCP 
    or UDP)监视,在PHP中用Socket functions连接这个端口,传递参数,
    并取得返回结果,so easy.
      

  5.   

    现在在学习php socket functions:
    问一下:
    The socket functions described here are part of an extension to PHP which must be enabled at compile time by giving the 
    --enable-ockets option to configure. 什么意思 ?就是要在在哪设置?
      

  6.   

    这段英文说得很清楚呀!!在linux下,编译PHP的时候要加入参数--enable-ockets,才支持这个功能在windows下,只要配置好,且extensions目录下有php_sockets.dll这个
    文件,就可以使用socket functions