popen()函数的问题

ymmoon 2007-07-16 02:10:20
以下是我的程序中有关popen()函数的一段内容
if((proc_fp = popen("ps aux", "r")) == NULL)
{
cout<<"popen error\n";
return -1;
}

问题是,我在程序运行了一段时间之后,程序就报错,输出一堆的:popen error.
可是刚开始运行的还挺好的呀,问题出在哪里呢?
...全文
333 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymmoon 2007-07-16
  • 打赏
  • 举报
回复
是pclose的问题,多谢各位!
cceczjxy 2007-07-16
  • 打赏
  • 举报
回复
你代码多贴出来点,大家不能光凭猜测来判断.
ymmoon 2007-07-16
  • 打赏
  • 举报
回复
程序会多次的调用这段程序,每次调用结束都会用pclose()关闭这个文件描述符,因此在前35分钟运行是正确的,程序出错是因为proc_fp返回的值为NULL,因此会不断的输出出错信息,所以我有点迷惑,正常的打开和关闭怎么会导致popen()出错呢?
dai_weitao 2007-07-16
  • 打赏
  • 举报
回复
在执行pclose之前就再次popen了, 所以会出错.
mymtom 2007-07-16
  • 打赏
  • 举报
回复
if((proc_fp = popen("ps aux", "r")) == NULL)
{
cout<<"popen error\n";
return -1;
}
======
这样写有什么用,改为perror("popen"),就能知道错误原因了,一个可能的原因是没有popen后没有忘记调用pclose,结果超过了进程能文件描述符限制。
hzcpig 2007-07-16
  • 打赏
  • 举报
回复
if((proc_fp = popen("ps aux", "r")) == NULL)
{
cout<<"popen error\n";
return -1;
}

这段代码输出一次popen error就会马上退出,你输出一堆popen error,肯定不是这段代码的原因。

建议留意popen error之前的日志,那时候在做什么,输出了什么,是不是每次都是执行固定时间后出错
ymmoon 2007-07-16
  • 打赏
  • 举报
回复
应该不是不能多次popen,程序是在执行了将近35分钟之后才发生异常的
一开始是怀疑pclose的问题,但似乎也不是
hzcpig 2007-07-16
  • 打赏
  • 举报
回复
输出一堆的:popen error.说明你的程序有循环调用popen的代码,你应该检查那部分代码。

怀疑是不是因为popen一次以后不能多次popen?

23,217

社区成员

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

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