欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于cgi调用错误退出

更新时间: 2014-01-05 02:03:22 责任编辑: Author_N1

 

关于cgi调用异常退出
现在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;
  }
--参考方法--
“char *str[2];
str[0] = "/home/asdb/webcgi/cgi-bin/exec.sh";”
汗~
--参考方法--
关注 接分
--参考方法--
关注。。。
--参考方法--
关注关注,你俺回答
--参考方法--
WEB有一条 隐规则 不允许通过WEB直接读写磁盘 
你可以写两个脚本

先执行这个脚本
/home/asdb/webcgi/cgi-bin/tmp_exec.sh

/home/asdb/webcgi/cgi-bin/tmp_exec.sh 内容

#!/bin/sh
/home/asdb/webcgi/cgi-bin/exec.sh
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:03:22
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/5096/
本文WWW.DOC100.NET DOC100.NET版权所有。