免费注册 查看新帖 |

Chinaunix

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

怎样让popen( "tail -f xxx.log" , "r" )后面的pclose返回 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-25 12:22 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
2 [报告]
发表于 2008-11-25 12:38 |只看该作者
没有这么用过,观注.  可能以后会有跟踪文件内容更新的需要

论坛徽章:
0
3 [报告]
发表于 2008-11-25 12:44 |只看该作者
原帖由 BetonArmEE 于 2008-11-25 12:22 发表
fp = popen( "tail -f xxx.log" , "r" ) ;
...
fgets( buffer , sizeof(buffer) , fp );
...
pclose(fp);
程序永远堵塞在pclose里
把fgets去掉pclose就不会堵塞立即返回

我现在需要读tail -f xxx.log直 ...

fgets怎么会阻塞呢?
fgets在下列情况下就返回:
1.the end-of-file is reached

2.a newline ('\n') character is read

3.n-1 characters have been read.

如果fgets阻塞住了,那么就是说没有出现上面3种情况,可是,会不出现这3种情况吗?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-11-25 13:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2008-11-25 13:43 |只看该作者
原帖由 BetonArmEE 于 2008-11-25 13:39 发表


不是fgets堵塞,是pclose堵塞不返回

哦,pclose必须等待popen创建的子进程终止才能返回的啊。。。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2008-11-25 13:57 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2012-08-10 16:25 |只看该作者
请问你的问题解决了吗,我现在遇到一个同样的问题,期待你的解答。回复 6# BetonArmEE


   

论坛徽章:
23
双鱼座
日期:2013-08-30 09:25:19辰龙
日期:2014-07-28 11:22:24白羊座
日期:2014-08-26 10:34:1815-16赛季CBA联赛之浙江
日期:2016-03-15 10:51:5415-16赛季CBA联赛之八一
日期:2016-05-31 09:38:3615-16赛季CBA联赛之辽宁
日期:2017-08-31 14:59:2115-16赛季CBA联赛之辽宁
日期:2017-12-06 14:12:3615-16赛季CBA联赛之天津
日期:2019-01-02 15:25:4915-16赛季CBA联赛之深圳
日期:2020-12-06 11:26:21狮子座
日期:2014-05-19 09:16:35技术图书徽章
日期:2014-03-27 13:37:39技术图书徽章
日期:2013-08-30 09:28:52
8 [报告]
发表于 2012-08-10 18:07 |只看该作者
同样疑问,刚man了下,不知可否考虑加上--pid选项啊:
  1. -f, --follow[={name|descriptor}]
  2.               output appended data as the file grows; -f, --follow, and --fol‐
  3.               low=descriptor are equivalent

  4. --pid=PID
  5.               with -f, terminate after process ID, PID dies
复制代码
不知到怎么用~

论坛徽章:
0
9 [报告]
发表于 2016-01-14 15:46 |只看该作者
楼主你好,你的问题解决了么? 我现在也被这个问题困扰着

论坛徽章:
0
10 [报告]
发表于 2016-01-14 16:06 |只看该作者
tail   -f 循环读取

如果日志文件没有输入数据是一直阻塞的,你 pclose 怎么会执行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP