免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5199 | 回复: 4

【】关于exec后台的问题 [复制链接]

论坛徽章:
0
发表于 2011-08-09 10:16 |显示全部楼层
程序:
-bash-3.00# cat test.php
<?php
        exec("date",$date);
        exec("( quotacheck /mnt/ppkkk & ) ");
        exec("date",$date);
        print_r($date);


?>
结果:


-bash-3.00# php test.php
Array
(
    [0] => Tue Aug  9 10:06:31 CST 2011
    [1] => Tue Aug  9 10:08:34 CST 2011
)


0     0  5943  4863  17   0  7148 2648 pipe_w S+   pts/1      0:00 php test.php
0     0  5945  5943  19   0     0    0 exit   Z+   pts/1      0:00 [sh] <defunct>
4     0  5947     1  18   0 17512 14136 lock_p D+  pts/1      0:00 quotacheck /mnt/ppkkk

疑问:

这个程序应该是把quotacheck放入后台执行,然后马上运行后面一条date。但是运行结果却是等待quotacheck执行完才执行。并且还带出了一个僵尸进程。

这是为什么 我想要真正达到把把quotacheck放入后台执行的效果怎么达到。

论坛徽章:
0
发表于 2011-08-09 10:29 |显示全部楼层
验证了下
exec("( quotacheck /mnt/ppkkk >/dev/null & ) ");
要这样才行,  求解释

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:55:28
发表于 2011-08-09 10:45 |显示全部楼层
php的exec的特性,在脚本执行完成后才返回,至于底层原理猜想跟shell下用&会pork子进程有关,php这一层认为脚本没有返回值,具体原因没深究过,反正exec要后台执行shell,就重定向到/dev/null就ok了。

论坛徽章:
0
发表于 2011-08-09 16:56 |显示全部楼层
本帖最后由 whoiswhoz 于 2011-08-09 16:59 编辑

那个僵尸进程是怎么产生的 这个我很不理解
因为开启了 quotacheck进程,然而这个进程一直卡在那里。没有正常退出。所以系统认为存在僵尸进程。
是这样吗

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:55:28
发表于 2011-08-10 11:33 |显示全部楼层
那个僵尸进程是怎么产生的 这个我很不理解
因为开启了 quotacheck进程,然而这个进程一直卡在那里。没有正 ...
whoiswhoz 发表于 2011-08-09 16:56



    这个我也不清楚,个人理解应该是这样的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP