MAC OS下反复调用popen 以及pclose会失败?

blackdew 2010-06-21 05:29:53
要做到是这样,需要在程序中多次调用shell命令并获得输出,我用的 popen机制,判断打开非空时用fgets来获得输出值,如
FILE *pp = NULL;
char str[MAX_LEN];
pp = popen("vm_stat", "r");
if(pp != NULL)
{
if(fgets(str, sizeof(str), pp)) .........

}

在运行的时候发现,popen都是非空的,但是对于同样的命令,fgets有时候成功有时候失败,如果直接执行,大部分时间是失败的,但是如果在fgets附近加个断点,然后不做任何事再continue,则fgets成功并能正确输出,感觉好像是运行太快需要减慢速度似的!

有哪位大侠有什么方法解决吗?小女在此多谢!
...全文
336 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
非兔子_Logic0 2010-06-23
  • 打赏
  • 举报
回复
有哪位大侠有什么方法解决吗?小女在此多谢!


亮点出现了
blackdew 2010-06-23
  • 打赏
  • 举报
回复
要反复调用几次才行,这个应该是UNIX系统的正常现象
mymtom 2010-06-21
  • 打赏
  • 举报
回复
楼主,上代码!
blackdew 2010-06-21
  • 打赏
  • 举报
回复
那是不是popen的问题?就是说实际上并没有打开成功,但是popen依然有返回值的?所以fgets 就得不到信息?
challenge99 2010-06-21
  • 打赏
  • 举报
回复
fgets读不到内容或错误时都会返回null
企业智慧中台规划与建设总体方案是一个针对企业数字化转型需求而设计的综合性IT解决方案。该方案旨在构建一个集中、高效和灵活的中台架构,通过整合企业内外部的数据资源、业务流程和应用服务,为企业提供一个统一的数字化运营平台。在当前的商业环境下,企业面临着激烈的市场竞争和不断变化的客户需求。为了应对这些挑战,企业需要快速响应市场变化,提高运营效率,降低成本,并实现持续创新。因此,企业智慧中台的规划和建设成为了关键任务。该方案的核心思想是将企业的业务逻辑、数据管理和技术创新紧密结合起来,形成一个高度集成的智慧中台系统。通过构建标准化的数据模型和接口,实现数据的一致性和可访问性,同时提供丰富的数据分析和挖掘工具,帮助企业发现潜在的商业价值和机。此外,该方案还注重用户体验和业务敏捷性。通过构建灵活的应用开发框架和API接口,支持快速的业务迭代和定制化需求,满足不同部门和角色的个性化需求。同时,通过智能化的自动化流程和决策支持系统,提高企业的决策效率和准确性。总之,企业智慧中台规划与建设总体方案是一个全面而深入的IT解决方案,旨在帮助企业实现数字化转型,提升竞争力和创新能力。通过构建集中、高效和灵活

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧