关于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;
}
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 ";”
汗~
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28