+ -
当前位置:首页 → 问答吧 → 关于cgi调用异常退出

关于cgi调用异常退出

时间:2007-04-23

来源:互联网

现在linux下面用c写cgi,调用脚本执行某一应用程序(或者直接调用该应用程序),代码如:
int   main()
{
    char   *str[2];
    str[0]   =   "/home/asdb/webcgi/cgi-bin/exec.sh ";
    str[1]   =   NULL;
    execv(str[0],   str);
    return   0;
}
调用后页面状态栏一直处于执行状态,此时可以查看到linux后台应用程序已经执行。接着进入查询页面,头几次可以正常查询,可是点击查询快一点或者刷新多几次页面,应用程序就会自动非法退出。而如果进入linux手动执行应用程序则一切正常,怎么刷、改都不会退出。请问是怎么回事呢?怎么样才能让页面调用脚本后恢复正常状态?
我也试过用子进程调用,结果是一样的。
    pid   =fork();
    if(pid   <   0)
    { //创建子进程失败
        perror( "error   occurred ");
    }
    else   if(pid   ==   0)
    {
        //子进程调用脚本启动AS服务器
        setsid();  
        chdir( "/home/asdb/webcgi/cgi-bin/ ");
        umask(0);
        execv(str[0],   str);
        exit(0);
    }
    else
    {//父进程等待2秒,然后检测应用程序是否已运行
        sleep(2);
        if   (!is_start(shm_param))
            .....;   //   调用成功提示页面。程序已经执行,但是没有执行这一步。
        else
            .....  
        return   0;
    }

作者: yxluocn   发布时间: 2007-04-23

“char   *str[2];
str[0]   =   "/home/asdb/webcgi/cgi-bin/exec.sh ";”
汗~

作者: BetonArmEE   发布时间: 2007-04-27

关注 接分

作者: UltraBejing   发布时间: 2008-04-30

关注。。。

作者: xiaoshun123   发布时间: 2010-04-30

[b][color=#FF99CC]关注关注,你俺回答[/color][/b]

作者: x_q123456   发布时间: 2010-05-12