免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2573 | 回复: 4
打印 上一主题 下一主题

调用外部程序[悬赏篇] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-15 10:46 |只看该作者 |倒序浏览
30可用积分
不会设置悬赏.就只能这样了

问题如下:
http://bbs.chinaunix.net/thread-1098823-1-1.html

论坛徽章:
0
2 [报告]
发表于 2008-05-15 13:41 |只看该作者
这样的人我喜欢

快给那兄弟发个短信来领分吧

比较好的方法是扔到后台队列里,然后让其他进程去执行,这样web可以立即返回,权限问题也好解决,而且如果有输出或者出错信息需要处理的话,那个后台进程也可以处理。

论坛徽章:
0
3 [报告]
发表于 2008-05-16 02:24 |只看该作者
exec("/data1/exe /data1/data  &");

我觉得这样做本来就是把这个进程仍给后台了.
应该在等一个返回结果吧

exec("/data1/exe /data1/data  &  >/dev/null"); 应该是把返回结果丢到黑洞里去了.



  1. $executeD =  date("dHi");
  2. $executeD +=  1;
  3. $executeM = date("m");
  4. $executeD = "$executeM"."$executeD";
  5. exec("at -f a.sh -t $executeD ");
复制代码

总是不能正确执行.这样的方式是否能即使返回(没有考虑第59分种的问题. now + 1 min 也出错.系统 freebsd6.2 ).
  1. usage: at [-q x] [-f file] [-m] time
  2.        at -c job [job ...]
  3.        at [-f file] -t [[CC]YY]MMDDhhmm[.SS]
  4.        at -r job [job ...]
  5.        at -l -q queuename
  6.        at -l [job ...]
  7.        atq [-q x] [-v]
  8.        atrm job [job ...]
  9.        batch [-f file] [-m]
复制代码



另外.如果用  pcntl_fork()  创建一个新进程.不知道是否也能解决这样的问题?

论坛徽章:
0
4 [报告]
发表于 2008-05-16 09:52 |只看该作者
原帖由 061107 于 2008-5-16 02:24 发表
exec("/data1/exe /data1/data  &");

我觉得这样做本来就是把这个进程仍给后台了.
应该在等一个返回结果吧

exec("/data1/exe /data1/data  &  >/dev/null"); 应该是把返回结果丢到黑洞里去了.



...

那就先把结果转到一个文件,下次需要的时候再找那个文件好了。

论坛徽章:
0
5 [报告]
发表于 2008-05-16 17:00 |只看该作者
at +1 minute

freebsd的at跟linux不一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP