exec("top -b >./top.dump &");

解决方案 »

  1.   

    我来说的详细点。系统是linux
    我写的一个c程序叫Netalert,我把Netalert拷到了/usr/local/bin下,现在在命令行直接输入Netalert然后带上参数就可以运行了。
    现在我要在php程序里启动Netalert,我写了个最简单的页面,其中:
    <?php
    $cmd = 'Netalert -c /root/Netalert/etc/Netalert.conf -D';
    $result = Array();
    exec = ($cmd, $result);
    $context = join("<BR>", $result);
    echo $context;
    ?>
    /root/Netalert/etc/Netalert.conf 是一个配置文件。
    Netalert运行后会一直处于运行状态,直到Ctrl + C才会退出。
    上面的代码我试了,结果ps -aux查看并没有Netalert进程存在。
    大侠们,拜托了。
      

  2.   

    我们一直以为你要调用的是系统命令,所以用的都是直接exec('commond'),但由于你调用的是自己的命令,所以到用的文件的路径一定要正确!假如你的Netalert程序在/usr下就要:
    exec('/usr/Netalert');
    看看这么着可以吗?
      

  3.   

    也不行。我试过了
    <?php
    $cmd = '/usr/local/bin/Netalert -c /root/Netalert/etc/Netalert.conf -D';
    $result = Array();
    exec = ($cmd, $result);
    $context = join("<BR>", $result);
    echo $context;
    ?>
    这样也不会有Netalert进程。
    后来我做了修改,重新建了个c程序,叫sys,在sys中用system("/usr/local/bin/Netalert -c /root/Netalert/etc/Netalert.conf -D")函数启动它,
    sys.c如下:system("/usr/local/bin/Netalert -c /root/Netalert/etc/Netalert.conf -D");
    printf("hello");然后我在php程序中启动sys,并把结果同样放在result数组中,然后屏显出来,结果有hello显示,但是没有netalert进程。大侠帮忙啊 !!!!
      

  4.   

    试过直接运行你的Netalert程序了吗?有结果吗?
      

  5.   

    直接在命令行下运行Netalert当然没问题,有结果的。
    直接在命令行下运行sys也没问题,能正常的启动Netalert。大侠帮忙啊 !!!!