免费注册 查看新帖 |

Chinaunix

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

在程序中使用popen 打开top并将输出定向到一个文件 pclose出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-10 15:04 |只看该作者 |倒序浏览
各位大牛:
我遇到了一个问题,

    FILE *fp = popen("top -l 0 -s %d > %s", "r");  
    pclose(fp);

使用top命令将监控的结果定向到一个文件中,参数 “-l 0”是让他无限的刷新并打印结果。
但我想停止这个进程,使用pclose(fp)之后,程序会死掉。因为pclose 首先要等待结束,才会close
不知道这个问题因该怎么处理。
有没有别的方法可以替代popen, 我只是想让程序把结果定向到文件,然后我再解析文件。有没有什么方法,创建一个进程之后能返回这个进程,然后我再通过这个进程id关闭这个进程,然后只需要解析结果文件就可以了。

论坛徽章:
0
2 [报告]
发表于 2012-08-10 16:39 |只看该作者
FILE *fp = popen("top -l 0 -s 2 > log", "r");  
pclose(fp);
这种情况就不能关闭fp,程序会在pclose处阻塞,
FILE *fp = popen("top -l 0 -s 2 ", "r");  
pclose(fp);
这种情况下,可以顺利的关闭fp,程序不会阻塞,
请问,在第一种情况下,怎么才能正常的关闭呢?

论坛徽章:
0
3 [报告]
发表于 2012-08-10 17:12 |只看该作者
经过测试,使用定向之后
FILE *fp = popen("top -l 0 -s 2 > log", "r");  
pclose(fp);
这种情况下,top的夫进程是sh,sh的父进程才是自己的程序的进程

FILE *fp = popen("top -l 0 -s 2 ", "r");  
pclose(fp);
不使用定向,top的父进程就是自己程序的进程。
会不会和这个有关系,导致pclose阻塞掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP