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成功并能正确输出,感觉好像是运行太快需要减慢速度似的!

有哪位大侠有什么方法解决吗?小女在此多谢!
...全文
368 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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

23,215

社区成员

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

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